Message d’erreur
IDX20803: Unable to obtain configuration from: 'http://keycloak:8080/realms/main/.well-known/openid-configuration'.
Également affiché sous la forme
- System.InvalidOperationException: IDX20803: Unable to obtain configuration from:
- IDX20108: The address specified 'http://keycloak:8080/realms/main/.well-known/openid-configuration' is not valid as per HTTPS scheme. Please specify an https address for security reasons.
- IDX20804: Unable to retrieve document from:
Le message se poursuit par « Will retry at '…'. Exception: '…' » et le texte de l’exception interne. L’URL est votre `Authority` + `/.well-known/openid-configuration` ou votre `MetadataAddress`.
Microsoft.IdentityModel.Protocols (.NET) — ConfigurationManager<OpenIdConnectConfiguration>, used by JwtBearer and OpenIdConnect handlers
Ce que cela signifie
Le gestionnaire de configuration n’a pas pu télécharger (ou analyser) le document de découverte OpenID Connect : le gestionnaire JWT Bearer ou OpenID Connect n’a donc ni émetteur ni clés de signature. Chaque jeton est alors rejeté, généralement avec des erreurs IDX10500/IDX10503 à la suite. La véritable raison se trouve dans l’exception interne : IDX20108 lorsque l’adresse des métadonnées est en HTTP simple alors que HTTPS est exigé, IDX20804 avec une erreur réseau ou TLS dans les autres cas.
Pourquoi cela se produit
Adresse de métadonnées HTTP avec RequireHttpsMetadata activé
fréquenteLes conteneurs Keycloak ou IdentityServer locaux sont souvent joints via `http://service:8080`. `RequireHttpsMetadata` vaut true par défaut : le composant de récupération refuse donc l’adresse avant même de se connecter (IDX20108).
L’autorité est injoignable depuis l’API
fréquenteUn DNS qui ne résout le nom qu’en dehors du cluster, un pare-feu ou un proxy sortant, ou un réseau de conteneurs où `localhost` désigne le conteneur lui-même.
Certificat TLS non approuvé
occasionnelleLes certificats auto-signés ou émis par une AC interne sur le fournisseur d’identité font échouer la requête HTTPS dans le conteneur de l’API, sauf si cette AC y est installée.
Mauvais chemin d’autorité
occasionnelleUn `/realms/<name>` (Keycloak), un ID de locataire ou un `/v2.0` (Entra ID) manquant donne une erreur 404 pour l’URL de découverte.
Comment corriger l’erreur
- 1.
N’autoriser les métadonnées HTTP qu’en développement
Liez `RequireHttpsMetadata = false` à l’environnement de développement ; en production, l’autorité doit être en HTTPS, car les clés que vous téléchargez décident des jetons que vous acceptez.
csharp builder.Services.AddAuthentication().AddJwtBearer(options => { options.Authority = builder.Configuration["Auth:Authority"]; // Plain HTTP only for local development containers; production authorities must be HTTPS. options.RequireHttpsMetadata = !builder.Environment.IsDevelopment(); }); - 2.
Récupérer l’URL depuis l’endroit où s’exécute l’API
Exécutez la requête dans le conteneur ou le pod de l’API. Un 200 avec du JSON confirme le réseau et TLS ; toute autre réponse désigne la couche à corriger.
bash # From inside the API container: DNS, TLS and HTTP status of the metadata URL curl -sS -o /dev/null -w '%{http_code} %{ssl_verify_result}\n' https://login.example.com/realms/main/.well-known/openid-configuration
Erreurs associées
IDX10503: Signature validation failed. The token's kid is: '2026-10', but did n…Microsoft.IdentityModel.JsonWebTokens / System.IdentityModel.Tokens.Jwt (.NET)Expected 200 OK from the JSON Web Key Set HTTP responsejose (JavaScript)oidc: issuer URL provided to client ("https://accounts.example.com") did not ma…coreos/go-oidc (Go)