Compare commits

...

2 commits

Author SHA1 Message Date
850db9f590 Fix scope cannot be determined when the access token cannot be decoded
All checks were successful
/ build (push) Successful in 5s
/ test (push) Successful in 6s
2025-02-23 16:37:47 +01:00
f6a84fd3aa Cosmetic 2025-02-22 18:57:25 +01:00
2 changed files with 10 additions and 6 deletions

View file

@ -20,7 +20,7 @@ logger = logging.getLogger("oidc-test")
async def fetch_token(name, request): async def fetch_token(name, request):
assert name is not None assert name is not None
assert request is not None assert request is not None
logger.warn("TODO: fetch_token") logger.warning("TODO: fetch_token")
... ...
# if name in oidc_providers: # if name in oidc_providers:
# model = OAuth2Token # model = OAuth2Token
@ -32,7 +32,10 @@ async def fetch_token(name, request):
async def update_token( async def update_token(
provider_id, token, refresh_token: str | None = None, access_token: str | None = None provider_id,
token,
refresh_token: str | None = None,
access_token: str | None = None,
): ):
"""Update the token in the database""" """Update the token in the database"""
provider = providers[provider_id] provider = providers[provider_id]

View file

@ -123,19 +123,20 @@ async def home(
try: try:
access_token_parsed = provider.decode(token["access_token"], verify_signature=False) access_token_parsed = provider.decode(token["access_token"], verify_signature=False)
context["access_token_parsed"] = access_token_parsed context["access_token_parsed"] = access_token_parsed
context["access_token_scope"] = access_token_parsed.get("scope")
except PyJWTError as err: except PyJWTError as err:
access_token_parsed = {"Cannot parse": err.__class__.__name__} context["access_token_parsed"] = {"Cannot parse": err.__class__.__name__}
context["access_token_scope"] = None
try: try:
id_token_parsed = provider.decode(token["id_token"], verify_signature=False) id_token_parsed = provider.decode(token["id_token"], verify_signature=False)
context["id_token_parsed"] = id_token_parsed context["id_token_parsed"] = id_token_parsed
except PyJWTError as err: except PyJWTError as err:
id_token_parsed = {"Cannot parse": err.__class__.__name__} context["id_token_parsed"] = {"Cannot parse": err.__class__.__name__}
try: try:
refresh_token_parsed = provider.decode(token["refresh_token"], verify_signature=False) refresh_token_parsed = provider.decode(token["refresh_token"], verify_signature=False)
context["refresh_token_parsed"] = refresh_token_parsed context["refresh_token_parsed"] = refresh_token_parsed
except PyJWTError as err: except PyJWTError as err:
refresh_token_parsed = {"Cannot parse": err.__class__.__name__} context["refresh_token_parsed"] = {"Cannot parse": err.__class__.__name__}
context["access_token_scope"] = access_token_parsed.get("scope")
context["resources"] = registry.resources context["resources"] = registry.resources
context["resource_providers"] = provider.resource_providers context["resource_providers"] = provider.resource_providers
return templates.TemplateResponse(name="home.html", request=request, context=context) return templates.TemplateResponse(name="home.html", request=request, context=context)