Skip to content

Commit ff667e8

Browse files
committed
Allow requested_authn_context to be an object
Signed-off-by: Ivan Kanakarakis <[email protected]>
1 parent 5d31164 commit ff667e8

File tree

1 file changed

+23
-13
lines changed

1 file changed

+23
-13
lines changed

src/saml2/client_base.py

Lines changed: 23 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import six
1010
import time
1111
import logging
12+
from typing import Mapping
1213
from warnings import warn as _warn
1314

1415
from saml2.entity import Entity
@@ -365,20 +366,29 @@ def create_authn_request(
365366
or self.config.getattr("requested_authn_context", "sp")
366367
or {}
367368
)
368-
requested_authn_context_accrs = requested_authn_context.get(
369-
"authn_context_class_ref", []
370-
)
371-
requested_authn_context_comparison = requested_authn_context.get(
372-
"comparison", "exact"
373-
)
374-
if requested_authn_context_accrs:
375-
args["requested_authn_context"] = RequestedAuthnContext(
376-
authn_context_class_ref=[
377-
AuthnContextClassRef(accr)
378-
for accr in requested_authn_context_accrs
379-
],
380-
comparison=requested_authn_context_comparison,
369+
if isinstance(requested_authn_context, RequestedAuthnContext):
370+
args["requested_authn_context"] = requested_authn_context
371+
elif isinstance(requested_authn_context, Mapping):
372+
requested_authn_context_accrs = requested_authn_context.get(
373+
"authn_context_class_ref", []
381374
)
375+
requested_authn_context_comparison = requested_authn_context.get(
376+
"comparison", "exact"
377+
)
378+
if requested_authn_context_accrs:
379+
args["requested_authn_context"] = RequestedAuthnContext(
380+
authn_context_class_ref=[
381+
AuthnContextClassRef(accr)
382+
for accr in requested_authn_context_accrs
383+
],
384+
comparison=requested_authn_context_comparison,
385+
)
386+
else:
387+
logger.warning({
388+
"message": "Cannot process requested_authn_context",
389+
"requested_authn_context": requested_authn_context,
390+
"type_of_requested_authn_context": type(requested_authn_context),
391+
})
382392

383393
# Allow argument values either as class instances or as dictionaries
384394
# all of these have cardinality 0..1

0 commit comments

Comments
 (0)