@@ -40,10 +40,18 @@ class Saml2Client(Base):
40
40
""" The basic pySAML2 service provider class """
41
41
42
42
def prepare_for_authenticate (
43
- self , entityid = None , relay_state = "" ,
44
- binding = saml2 .BINDING_HTTP_REDIRECT , vorg = "" , nameid_format = None ,
45
- scoping = None , consent = None , extensions = None , sign = None ,
46
- response_binding = saml2 .BINDING_HTTP_POST , ** kwargs ):
43
+ self ,
44
+ entityid = None ,
45
+ relay_state = "" ,
46
+ binding = saml2 .BINDING_HTTP_REDIRECT ,
47
+ vorg = "" ,
48
+ nameid_format = None ,
49
+ scoping = None ,
50
+ consent = None , extensions = None ,
51
+ sign = None ,
52
+ response_binding = saml2 .BINDING_HTTP_POST ,
53
+ ** kwargs ,
54
+ ):
47
55
""" Makes all necessary preparations for an authentication request.
48
56
49
57
:param entityid: The entity ID of the IdP to send the request to
@@ -61,19 +69,19 @@ def prepare_for_authenticate(
61
69
:return: session id and AuthnRequest info
62
70
"""
63
71
64
- reqid , negotiated_binding , info = \
65
- self . prepare_for_negotiated_authenticate (
66
- entityid = entityid ,
67
- relay_state = relay_state ,
68
- binding = binding ,
69
- vorg = vorg ,
70
- nameid_format = nameid_format ,
71
- scoping = scoping ,
72
- consent = consent ,
73
- extensions = extensions ,
74
- sign = sign ,
75
- response_binding = response_binding ,
76
- ** kwargs )
72
+ reqid , negotiated_binding , info = self . prepare_for_negotiated_authenticate (
73
+ entityid = entityid ,
74
+ relay_state = relay_state ,
75
+ binding = binding ,
76
+ vorg = vorg ,
77
+ nameid_format = nameid_format ,
78
+ scoping = scoping ,
79
+ consent = consent ,
80
+ extensions = extensions ,
81
+ sign = sign ,
82
+ response_binding = response_binding ,
83
+ ** kwargs ,
84
+ )
77
85
78
86
if negotiated_binding != binding :
79
87
raise ValueError (
@@ -85,9 +93,19 @@ def prepare_for_authenticate(
85
93
return reqid , info
86
94
87
95
def prepare_for_negotiated_authenticate (
88
- self , entityid = None , relay_state = "" , binding = None , vorg = "" ,
89
- nameid_format = None , scoping = None , consent = None , extensions = None ,
90
- sign = None , response_binding = saml2 .BINDING_HTTP_POST , ** kwargs ):
96
+ self ,
97
+ entityid = None ,
98
+ relay_state = "" ,
99
+ binding = None ,
100
+ vorg = "" ,
101
+ nameid_format = None ,
102
+ scoping = None ,
103
+ consent = None ,
104
+ extensions = None ,
105
+ sign = None ,
106
+ response_binding = saml2 .BINDING_HTTP_POST ,
107
+ ** kwargs ,
108
+ ):
91
109
""" Makes all necessary preparations for an authentication request
92
110
that negotiates which binding to use for authentication.
93
111
@@ -116,26 +134,37 @@ def prepare_for_negotiated_authenticate(
116
134
logger .info ("destination to provider: %s" , destination )
117
135
118
136
reqid , request = self .create_authn_request (
119
- destination , vorg , scoping , response_binding , nameid_format ,
120
- consent = consent , extensions = extensions , sign = sign ,
121
- ** kwargs )
137
+ destination ,
138
+ vorg ,
139
+ scoping ,
140
+ response_binding ,
141
+ nameid_format ,
142
+ consent = consent ,
143
+ extensions = extensions ,
144
+ sign = sign ,
145
+ ** kwargs ,
146
+ )
122
147
123
148
_req_str = str (request )
124
-
125
149
logger .info ("AuthNReq: %s" , _req_str )
126
150
127
151
try :
128
152
args = {'sigalg' : kwargs ["sigalg" ]}
129
153
except KeyError :
130
154
args = {}
131
155
132
- http_info = self .apply_binding (binding , _req_str , destination ,
133
- relay_state , sign = sign , ** args )
156
+ http_info = self .apply_binding (
157
+ binding ,
158
+ _req_str ,
159
+ destination ,
160
+ relay_state ,
161
+ sign = sign ,
162
+ ** args ,
163
+ )
134
164
135
165
return reqid , binding , http_info
136
166
else :
137
- raise SignOnError (
138
- "No supported bindings available for authentication" )
167
+ raise SignOnError ("No supported bindings available for authentication" )
139
168
140
169
def global_logout (self , name_id , reason = "" , expire = None , sign = None ,
141
170
sign_alg = None , digest_alg = None ):
@@ -232,43 +261,47 @@ def do_logout(self, name_id, entity_ids, reason, expire, sign=None,
232
261
sigalg = None
233
262
if sign :
234
263
if binding == BINDING_HTTP_REDIRECT :
235
- sigalg = kwargs .get (
236
- "sigalg" , ds .DefaultSignature ().get_sign_alg ())
264
+ sigalg = kwargs .get ("sigalg" , ds .DefaultSignature ().get_sign_alg ())
237
265
# key = kwargs.get("key", self.signkey)
238
266
srequest = str (request )
239
267
else :
240
- srequest = self .sign (request , sign_alg = sign_alg ,
241
- digest_alg = digest_alg )
268
+ srequest = self .sign (
269
+ request , sign_alg = sign_alg , digest_alg = digest_alg
270
+ )
242
271
else :
243
272
srequest = str (request )
244
273
245
274
relay_state = self ._relay_state (req_id )
246
275
247
- http_info = self .apply_binding (binding , srequest , destination ,
248
- relay_state , sign = sign , sigalg = sigalg )
276
+ http_info = self .apply_binding (
277
+ binding ,
278
+ srequest ,
279
+ destination ,
280
+ relay_state ,
281
+ sign = sign ,
282
+ sigalg = sigalg ,
283
+ )
249
284
250
285
if binding == BINDING_SOAP :
251
286
response = self .send (** http_info )
252
-
253
287
if response and response .status_code == 200 :
254
288
not_done .remove (entity_id )
255
289
response = response .text
256
290
logger .info ("Response: %s" , response )
257
- res = self .parse_logout_request_response (response ,
258
- binding )
291
+ res = self .parse_logout_request_response (response , binding )
259
292
responses [entity_id ] = res
260
293
else :
261
294
logger .info ("NOT OK response from %s" , destination )
262
-
263
295
else :
264
- self .state [req_id ] = {"entity_id" : entity_id ,
265
- "operation" : "SLO" ,
266
- "entity_ids" : entity_ids ,
267
- "name_id" : code (name_id ),
268
- "reason" : reason ,
269
- "not_on_or_after" : expire ,
270
- "sign" : sign }
271
-
296
+ self .state [req_id ] = {
297
+ "entity_id" : entity_id ,
298
+ "operation" : "SLO" ,
299
+ "entity_ids" : entity_ids ,
300
+ "name_id" : code (name_id ),
301
+ "reason" : reason ,
302
+ "not_on_or_after" : expire ,
303
+ "sign" : sign ,
304
+ }
272
305
responses [entity_id ] = (binding , http_info )
273
306
not_done .remove (entity_id )
274
307
0 commit comments