|
16 | 16 | """
|
17 | 17 |
|
18 | 18 | import json
|
19 |
| -from base64 import b64encode, b64decode, urlsafe_b64decode |
20 |
| -from datetime import datetime |
21 | 19 | import random
|
22 |
| -import string |
23 | 20 | import requests
|
24 |
| -from requests.sessions import Session |
25 | 21 | import six
|
26 |
| -from jwt import PyJWKSet |
27 |
| - |
| 22 | +import string |
| 23 | +from base64 import b64encode, b64decode, urlsafe_b64decode |
| 24 | +from datetime import datetime |
| 25 | +from jwt import PyJWKSet, PyJWTError |
| 26 | +from requests.sessions import Session |
28 | 27 |
|
| 28 | +from intuitlib.config import DISCOVERY_URL, ACCEPT_HEADER |
29 | 29 | from intuitlib.enums import Scopes
|
30 | 30 | from intuitlib.exceptions import AuthClientError
|
31 |
| -from intuitlib.config import DISCOVERY_URL, ACCEPT_HEADER |
| 31 | + |
32 | 32 |
|
33 | 33 | def get_discovery_doc(environment, session=None):
|
34 | 34 | """Gets discovery doc based on environment specified.
|
@@ -164,10 +164,12 @@ def validate_id_token(id_token, client_id, intuit_issuer, jwk_uri):
|
164 | 164 | return False
|
165 | 165 |
|
166 | 166 | message = id_token_parts[0] + '.' + id_token_parts[1]
|
167 |
| - public_key = get_jwk(id_token_header['kid'], jwk_uri).key |
168 |
| - |
169 |
| - is_signature_valid = public_key.verify(message.encode('utf-8'), id_token_signature) |
170 |
| - return is_signature_valid |
| 167 | + public_key = get_jwk(id_token_header['kid'], jwk_uri) |
| 168 | + try: |
| 169 | + jwt.decode(id_token, public_key, audience=client_id, algorithms=['RS256']) |
| 170 | + return True |
| 171 | + except PyJWTError: |
| 172 | + return False |
171 | 173 |
|
172 | 174 | def get_jwk(kid, jwk_uri):
|
173 | 175 | """Get JWK for public key information
|
|
0 commit comments