@@ -34,17 +34,18 @@ async def userinfo(self, **kwargs):
34
34
data = resp .json ()
35
35
return UserInfo (data )
36
36
37
- async def parse_id_token (self , token , nonce , claims_options = None ):
37
+ async def parse_id_token (self , token , nonce , claims_options = None , claims_cls = None , leeway = 120 ):
38
38
"""Return an instance of UserInfo from token's ``id_token``."""
39
39
claims_params = dict (
40
40
nonce = nonce ,
41
41
client_id = self .client_id ,
42
42
)
43
- if "access_token" in token :
44
- claims_params ["access_token" ] = token ["access_token" ]
45
- claims_cls = CodeIDToken
46
- else :
47
- claims_cls = ImplicitIDToken
43
+ if claims_cls is None :
44
+ if "access_token" in token :
45
+ claims_params ["access_token" ] = token ["access_token" ]
46
+ claims_cls = CodeIDToken
47
+ else :
48
+ claims_cls = ImplicitIDToken
48
49
49
50
metadata = await self .load_server_metadata ()
50
51
if claims_options is None and "issuer" in metadata :
@@ -78,5 +79,5 @@ async def parse_id_token(self, token, nonce, claims_options=None):
78
79
# https://github.com/lepture/authlib/issues/259
79
80
if claims .get ("nonce_supported" ) is False :
80
81
claims .params ["nonce" ] = None
81
- claims .validate (leeway = 120 )
82
+ claims .validate (leeway = leeway )
82
83
return UserInfo (claims )
0 commit comments