2020from datetime import datetime
2121import random
2222import string
23- from jose import jwk
2423import requests
2524from requests .sessions import Session
2625import six
27- from requests_oauthlib import OAuth1
26+ from jwt import PyJWKSet
2827
2928
3029from intuitlib .enums import Scopes
@@ -165,9 +164,8 @@ def validate_id_token(id_token, client_id, intuit_issuer, jwk_uri):
165164 return False
166165
167166 message = id_token_parts [0 ] + '.' + id_token_parts [1 ]
168- keys_dict = get_jwk (id_token_header ['kid' ], jwk_uri )
167+ public_key = get_jwk (id_token_header ['kid' ], jwk_uri )
169168
170- public_key = jwk .construct (keys_dict )
171169 is_signature_valid = public_key .verify (message .encode ('utf-8' ), id_token_signature )
172170 return is_signature_valid
173171
@@ -178,15 +176,14 @@ def get_jwk(kid, jwk_uri):
178176 :param jwk_uri: JWK URI
179177
180178 :raises HTTPError: if response status != 200
181- :return: dict containing keys
179+ :return: Algorithm with the key loaded.
182180 """
183181
184182 response = requests .get (jwk_uri )
185183 if response .status_code != 200 :
186184 raise AuthClientError (response )
187185 data = response .json ()
188- keys = next (key for key in data ["keys" ] if key ['kid' ] == kid )
189- return keys
186+ return PyJWKSet .from_dict (data )[kid ]
190187
191188def _correct_padding (val ):
192189 """Correct padding for JWT
0 commit comments