summaryrefslogtreecommitdiff
path: root/src/saml2/client_base.py
diff options
context:
space:
mode:
authorRoland Hedberg <roland.hedberg@adm.umu.se>2013-01-22 12:19:12 +0100
committerRoland Hedberg <roland.hedberg@adm.umu.se>2013-01-22 12:19:12 +0100
commit97ecbd509b610be573752b2707d2df007efc2f24 (patch)
tree06a5e84ddcf0f9a0f3d90898a0d00428d6ed09cb /src/saml2/client_base.py
parentc35362abdcaf7bd6f854ba6b07f5ae1caaa7d204 (diff)
downloadpysaml2-97ecbd509b610be573752b2707d2df007efc2f24.tar.gz
Updated to follow the new API.
Fixed a cert in metadata handling problem
Diffstat (limited to 'src/saml2/client_base.py')
-rw-r--r--src/saml2/client_base.py73
1 files changed, 45 insertions, 28 deletions
diff --git a/src/saml2/client_base.py b/src/saml2/client_base.py
index dff346d2..2a71ef1d 100644
--- a/src/saml2/client_base.py
+++ b/src/saml2/client_base.py
@@ -198,7 +198,7 @@ class Base(Entity):
nameid_format=NAMEID_FORMAT_TRANSIENT,
service_url_binding=None,
id=0, consent=None, extensions=None, sign=None,
- allow_create=False):
+ allow_create=False, **kwargs):
""" Creates an authentication request.
:param destination: Where the request should be sent.
@@ -215,39 +215,56 @@ class Base(Entity):
:param allow_create: If the identity provider is allowed, in the course
of fulfilling the request, to create a new identifier to represent
the principal.
+ :param kwargs: Extra key word arguments
:return: <samlp:AuthnRequest> instance
"""
- if service_url_binding is None:
- service_url = self.service_url(binding)
- else:
- service_url = self.service_url(service_url_binding)
-
- if binding == BINDING_PAOS:
- my_name = None
- location = None
- else:
- my_name = self._my_name()
+ try:
+ service_url = kwargs["assertion_consumer_service_url"]
+ except KeyError:
+ if service_url_binding is None:
+ service_url = self.service_url(binding)
+ else:
+ service_url = self.service_url(service_url_binding)
- if allow_create:
- allow_create="true"
- else:
- allow_create="false"
+ try:
+ my_name = kwargs["provider_name"]
+ except KeyError:
+ if binding == BINDING_PAOS:
+ my_name = None
+ else:
+ my_name = self._my_name()
- # Profile stuff, should be configurable
- if nameid_format is None or nameid_format == NAMEID_FORMAT_TRANSIENT:
- name_id_policy = samlp.NameIDPolicy(allow_create=allow_create,
- format=NAMEID_FORMAT_TRANSIENT)
- else:
- name_id_policy = samlp.NameIDPolicy(allow_create=allow_create,
- format=nameid_format)
+ try:
+ name_id_policy = kwargs["name_id_policy"]
+ except:
+ if allow_create:
+ allow_create="true"
+ else:
+ allow_create="false"
- if vorg:
- try:
- name_id_policy.sp_name_qualifier = vorg
- name_id_policy.format = saml.NAMEID_FORMAT_PERSISTENT
- except KeyError:
- pass
+ # Profile stuff, should be configurable
+ if nameid_format is None or nameid_format == NAMEID_FORMAT_TRANSIENT:
+ name_id_policy = samlp.NameIDPolicy(allow_create=allow_create,
+ format=NAMEID_FORMAT_TRANSIENT)
+ else:
+ name_id_policy = samlp.NameIDPolicy(allow_create=allow_create,
+ format=nameid_format)
+
+ if vorg:
+ try:
+ name_id_policy.sp_name_qualifier = vorg
+ name_id_policy.format = saml.NAMEID_FORMAT_PERSISTENT
+ except KeyError:
+ pass
+
+ if extensions is None:
+ extensions = []
+ for key,val in kwargs.items():
+ if key not in AuthnRequest.c_attributes and \
+ key not in AuthnRequest.c_children:
+ # extension elements allowed
+ extensions.append(saml2.element_to_extension_element(val))
return self._message(AuthnRequest, destination, id, consent,
extensions, sign,