@@ -40,7 +40,9 @@ def ecp_capable(headers):
40
40
41
41
42
42
#noinspection PyUnusedLocal
43
- def ecp_auth_request (cls , entityid = None , relay_state = "" , sign = False ):
43
+ def ecp_auth_request (
44
+ cls , entityid = None , relay_state = "" , sign = None , sign_alg = None , digest_alg = None
45
+ ):
44
46
""" Makes an authentication request.
45
47
46
48
:param entityid: The entity ID of the IdP to send the request to
@@ -59,9 +61,12 @@ def ecp_auth_request(cls, entityid=None, relay_state="", sign=False):
59
61
60
62
# must_understand and actor according to the standard
61
63
#
62
- paos_request = paos .Request (must_understand = "1" , actor = ACTOR ,
63
- response_consumer_url = my_url ,
64
- service = SERVICE )
64
+ paos_request = paos .Request (
65
+ must_understand = "1" ,
66
+ actor = ACTOR ,
67
+ response_consumer_url = my_url ,
68
+ service = SERVICE ,
69
+ )
65
70
66
71
eelist .append (element_to_extension_element (paos_request ))
67
72
@@ -73,7 +78,13 @@ def ecp_auth_request(cls, entityid=None, relay_state="", sign=False):
73
78
74
79
location = cls ._sso_location (entityid , binding = BINDING_SOAP )
75
80
req_id , authn_req = cls .create_authn_request (
76
- location , binding = BINDING_PAOS , service_url_binding = BINDING_PAOS )
81
+ location ,
82
+ binding = BINDING_PAOS ,
83
+ service_url_binding = BINDING_PAOS ,
84
+ sign = sign ,
85
+ sign_alg = sign_alg ,
86
+ digest_alg = digest_alg ,
87
+ )
77
88
78
89
body = soapenv .Body ()
79
90
body .extension_elements = [element_to_extension_element (authn_req )]
@@ -96,16 +107,16 @@ def ecp_auth_request(cls, entityid=None, relay_state="", sign=False):
96
107
must_understand = "1" ,
97
108
provider_name = None ,
98
109
issuer = saml .Issuer (text = authn_req .issuer .text ),
99
- idp_list = idp_list )
110
+ idp_list = idp_list ,
111
+ )
100
112
101
113
eelist .append (element_to_extension_element (ecp_request ))
102
114
103
115
# ----------------------------------------
104
116
# <ecp:RelayState>
105
117
# ----------------------------------------
106
118
107
- relay_state = ecp .RelayState (actor = ACTOR , must_understand = "1" ,
108
- text = relay_state )
119
+ relay_state = ecp .RelayState (actor = ACTOR , must_understand = "1" , text = relay_state )
109
120
110
121
eelist .append (element_to_extension_element (relay_state ))
111
122
@@ -118,20 +129,22 @@ def ecp_auth_request(cls, entityid=None, relay_state="", sign=False):
118
129
119
130
soap_envelope = soapenv .Envelope (header = header , body = body )
120
131
121
- return req_id , "%s" % soap_envelope
132
+ return req_id , str ( soap_envelope )
122
133
123
134
124
135
def handle_ecp_authn_response (cls , soap_message , outstanding = None ):
125
136
rdict = soap .class_instances_from_soap_enveloped_saml_thingies (
126
- soap_message , [paos , ecp , samlp ])
137
+ soap_message , [paos , ecp , samlp ]
138
+ )
127
139
128
140
_relay_state = None
129
141
for item in rdict ["header" ]:
130
142
if item .c_tag == "RelayState" and item .c_namespace == ecp .NAMESPACE :
131
143
_relay_state = item
132
144
133
- response = authn_response (cls .config , cls .service_urls (), outstanding ,
134
- allow_unsolicited = True )
145
+ response = authn_response (
146
+ cls .config , cls .service_urls (), outstanding , allow_unsolicited = True
147
+ )
135
148
136
149
response .loads ("%s" % rdict ["body" ], False , soap_message )
137
150
response .verify ()
0 commit comments