diff options
author | Roland Hedberg <roland.hedberg@adm.umu.se> | 2014-12-01 22:35:06 +0100 |
---|---|---|
committer | Roland Hedberg <roland.hedberg@adm.umu.se> | 2014-12-01 22:35:06 +0100 |
commit | a941f1c3f04fe3ff7b6a36c29fef50ba07b71e08 (patch) | |
tree | 56da59fc04f36020426344a8ff07c4072230d14d | |
parent | 52205feb200554c104d37523d76db6d5760496aa (diff) | |
download | pysaml2-a941f1c3f04fe3ff7b6a36c29fef50ba07b71e08.tar.gz |
Support for more arguments
-rw-r--r-- | src/saml2/client_base.py | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/src/saml2/client_base.py b/src/saml2/client_base.py index 5e026d0c..86756cd5 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"] |