44
55import anyio
66import jwt
7+ from ellar .common import serialize_object
78from ellar .di import injectable
89from jwt import InvalidAlgorithmError , InvalidTokenError , PyJWKClient , PyJWKClientError
910
@@ -20,7 +21,9 @@ def __init__(self, jwt_config: JWTConfiguration) -> None:
2021 self .jwt_config = jwt_config
2122
2223 def get_jwks_client (self , jwt_config : JWTConfiguration ) -> t .Optional [PyJWKClient ]:
23- jwks_client = PyJWKClient (jwt_config .jwk_url ) if jwt_config .jwk_url else None
24+ jwks_client = (
25+ PyJWKClient (str (jwt_config .jwk_url )) if jwt_config .jwk_url else None
26+ )
2427 return jwks_client
2528
2629 def get_leeway (self , jwt_config : JWTConfiguration ) -> timedelta :
@@ -60,7 +63,9 @@ def sign(
6063 Returns an encoded token for the given payload dictionary.
6164 """
6265 _jwt_config = self ._merge_configurations (** jwt_config )
63- jwt_payload = Token (jwt_config = _jwt_config ).build (payload .copy ())
66+ jwt_payload = Token (jwt_config = _jwt_config ).build (
67+ serialize_object (payload .copy ())
68+ )
6469
6570 return jwt .encode (
6671 jwt_payload ,
@@ -93,7 +98,7 @@ def decode(
9398 """
9499 try :
95100 _jwt_config = self ._merge_configurations (** jwt_config )
96- return jwt .decode ( # type: ignore[no-any-return]
101+ return jwt .decode ( # type:ignore[no-any-return]
97102 token ,
98103 self .get_verifying_key (token , _jwt_config ),
99104 algorithms = [_jwt_config .algorithm ],
0 commit comments