summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoland Hedberg <roland.hedberg@adm.umu.se>2014-12-01 22:35:06 +0100
committerRoland Hedberg <roland.hedberg@adm.umu.se>2014-12-01 22:35:06 +0100
commita941f1c3f04fe3ff7b6a36c29fef50ba07b71e08 (patch)
tree56da59fc04f36020426344a8ff07c4072230d14d
parent52205feb200554c104d37523d76db6d5760496aa (diff)
downloadpysaml2-a941f1c3f04fe3ff7b6a36c29fef50ba07b71e08.tar.gz
Support for more arguments
-rw-r--r--src/saml2/client_base.py22
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"]