|
7 | 7 | from urllib.parse import urlencode
|
8 | 8 | from urllib.parse import urlparse
|
9 | 9 |
|
10 |
| -from cryptojwt import BadSyntax |
11 | 10 | from cryptojwt import as_unicode
|
12 | 11 | from cryptojwt import b64d
|
13 | 12 | from cryptojwt.jwe.exception import JWEException
|
@@ -90,10 +89,10 @@ def max_age(request):
|
90 | 89 |
|
91 | 90 |
|
92 | 91 | def verify_uri(
|
93 |
| - endpoint_context: EndpointContext, |
94 |
| - request: Union[dict, Message], |
95 |
| - uri_type: str, |
96 |
| - client_id: Optional[str] = None, |
| 92 | + endpoint_context: EndpointContext, |
| 93 | + request: Union[dict, Message], |
| 94 | + uri_type: str, |
| 95 | + client_id: Optional[str] = None, |
97 | 96 | ):
|
98 | 97 | """
|
99 | 98 | A redirect URI
|
@@ -223,10 +222,10 @@ def get_uri(endpoint_context, request, uri_type):
|
223 | 222 |
|
224 | 223 |
|
225 | 224 | def authn_args_gather(
|
226 |
| - request: Union[AuthorizationRequest, dict], |
227 |
| - authn_class_ref: str, |
228 |
| - cinfo: dict, |
229 |
| - **kwargs, |
| 225 | + request: Union[AuthorizationRequest, dict], |
| 226 | + authn_class_ref: str, |
| 227 | + cinfo: dict, |
| 228 | + **kwargs, |
230 | 229 | ):
|
231 | 230 | """
|
232 | 231 | Gather information to be used by the authentication method
|
@@ -522,27 +521,33 @@ def _login_required_error(self, redirect_uri, request):
|
522 | 521 | return _res
|
523 | 522 |
|
524 | 523 | def _unwrap_identity(self, identity):
|
| 524 | + # identity is a dict or a json object |
| 525 | + # the value of 'uid' in the dictionary might be a base64 encoded (b64e) json object |
525 | 526 | if isinstance(identity, dict):
|
| 527 | + _uid = as_unicode(identity['uid']) |
526 | 528 | try:
|
527 |
| - _id = b64d(as_bytes(identity["uid"])) |
528 |
| - except BadSyntax: |
| 529 | + _id = b64d(as_bytes(_uid)) |
| 530 | + except Exception as err: |
529 | 531 | return identity
|
530 | 532 | else:
|
531 | 533 | try:
|
532 | 534 | _id = b64d(as_bytes(identity))
|
533 |
| - except BadSyntax: |
| 535 | + except Exception as err: |
534 | 536 | return identity
|
535 | 537 |
|
536 |
| - return json.loads(as_unicode(_id)) |
| 538 | + try: |
| 539 | + return json.loads(as_unicode(_id)) |
| 540 | + except UnicodeDecodeError: |
| 541 | + return identity |
537 | 542 |
|
538 | 543 | def setup_auth(
|
539 |
| - self, |
540 |
| - request: Optional[Union[Message, dict]], |
541 |
| - redirect_uri: str, |
542 |
| - cinfo: dict, |
543 |
| - cookie: List[dict] = None, |
544 |
| - acr: str = None, |
545 |
| - **kwargs, |
| 544 | + self, |
| 545 | + request: Optional[Union[Message, dict]], |
| 546 | + redirect_uri: str, |
| 547 | + cinfo: dict, |
| 548 | + cookie: List[dict] = None, |
| 549 | + acr: str = None, |
| 550 | + **kwargs, |
546 | 551 | ) -> dict:
|
547 | 552 | """
|
548 | 553 |
|
@@ -665,12 +670,12 @@ def aresp_check(self, aresp, request):
|
665 | 670 | return ""
|
666 | 671 |
|
667 | 672 | def response_mode(
|
668 |
| - self, |
669 |
| - request: Union[dict, AuthorizationRequest], |
670 |
| - response_args: Optional[Union[dict, AuthorizationResponse]] = None, |
671 |
| - return_uri: Optional[str] = "", |
672 |
| - fragment_enc: Optional[bool] = None, |
673 |
| - **kwargs, |
| 673 | + self, |
| 674 | + request: Union[dict, AuthorizationRequest], |
| 675 | + response_args: Optional[Union[dict, AuthorizationResponse]] = None, |
| 676 | + return_uri: Optional[str] = "", |
| 677 | + fragment_enc: Optional[bool] = None, |
| 678 | + **kwargs, |
674 | 679 | ) -> dict:
|
675 | 680 | resp_mode = request["response_mode"]
|
676 | 681 | if resp_mode == "form_post":
|
@@ -969,10 +974,10 @@ def do_request_user(self, request_info, **kwargs):
|
969 | 974 | return kwargs
|
970 | 975 |
|
971 | 976 | def process_request(
|
972 |
| - self, |
973 |
| - request: Optional[Union[Message, dict]] = None, |
974 |
| - http_info: Optional[dict] = None, |
975 |
| - **kwargs, |
| 977 | + self, |
| 978 | + request: Optional[Union[Message, dict]] = None, |
| 979 | + http_info: Optional[dict] = None, |
| 980 | + **kwargs, |
976 | 981 | ):
|
977 | 982 | """The AuthorizationRequest endpoint
|
978 | 983 |
|
|
0 commit comments