|
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