From a941f1c3f04fe3ff7b6a36c29fef50ba07b71e08 Mon Sep 17 00:00:00 2001 From: Roland Hedberg Date: Mon, 1 Dec 2014 22:35:06 +0100 Subject: [PATCH] Support for more arguments --- src/saml2/client_base.py | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/saml2/client_base.py b/src/saml2/client_base.py index 5e026d0..86756cd 100644 --- a/src/saml2/client_base.py +++ b/src/saml2/client_base.py @@ -14,7 +14,7 @@ from saml2.entity import Entity from saml2.mdstore import destinations from saml2.profile import paos, ecp from saml2.saml import NAMEID_FORMAT_TRANSIENT -from saml2.samlp import AuthnQuery +from saml2.samlp import AuthnQuery, RequestedAuthnContext from saml2.samlp import NameIDMappingRequest from saml2.samlp import AttributeQuery from saml2.samlp import AuthzDecisionQuery @@ -252,6 +252,26 @@ class Base(Entity): else: args["provider_name"] = self._my_name() + # Allow argument values either as class instances or as dictionaries + _msg = AuthnRequest() + for param in ["scoping", "requested_authn_context", "conditions", + "subject", "scoping"]: + try: + _item = kwargs[param] + except KeyError: + pass + else: + del kwargs[param] + # either class instance or argument dictionary + if isinstance(_item, _msg.child_class(param)): + args[param] = _item + elif isinstance(_item, dict): + args[param] = RequestedAuthnContext(**_item) + else: + raise ValueError("%s or wrong type expected %s" % (_item, + param)) + + try: args["name_id_policy"] = kwargs["name_id_policy"] del kwargs["name_id_policy"]