normalize discovery issuer path

This commit is contained in:
2026-04-03 19:45:20 +02:00
parent b5053c5536
commit dfc3764bcc

View File

@@ -20,13 +20,14 @@ class TokenValidationError(Exception):
pass pass
def _normalize_issuer(value: str | None) -> str | None: def _normalize_issuer(value: str | None) -> tuple[str | None, str | None]:
if not value: if not value:
return None return None, None
normalized = value.strip().rstrip("/") raw = value.strip().rstrip("/")
if normalized.endswith("/application/o/authorize"): normalized = raw.replace("/application/o/authorize/", "/application/o/")
normalized = normalized[: -len("/authorize")] normalized = normalized.replace("/application/o/authorize", "/application/o")
return normalized.rstrip("/") normalized = normalized.rstrip("/")
return raw, normalized if normalized != raw else raw
class OidcTokenValidator: class OidcTokenValidator:
@@ -38,16 +39,16 @@ class OidcTokenValidator:
jwks_url: str | None = None, jwks_url: str | None = None,
disable: bool = False, disable: bool = False,
) -> None: ) -> None:
normalized_issuer = _normalize_issuer(issuer) raw_issuer, discovery_issuer = _normalize_issuer(issuer)
self.issuer = normalized_issuer self.issuer = raw_issuer
self.audience = audience self.audience = audience
self.jwks_url = jwks_url self.jwks_url = jwks_url
self.discovery_url = ( self.discovery_url = (
f"{normalized_issuer.rstrip('/')}/.well-known/openid-configuration" f"{(discovery_issuer or raw_issuer).rstrip('/')}/.well-known/openid-configuration"
if normalized_issuer if (discovery_issuer or raw_issuer)
else None else None
) )
self.disable = disable or not normalized_issuer self.disable = disable or not raw_issuer
self._jwks: dict[str, Any] | None = None self._jwks: dict[str, Any] | None = None
self._jwks_expiry: float = 0 self._jwks_expiry: float = 0