Mensaje de error
IDX20803: Unable to obtain configuration from: 'http://keycloak:8080/realms/main/.well-known/openid-configuration'.
También se muestra como
- 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:
El mensaje continúa con «Will retry at '…'. Exception: '…'» y el texto de la excepción interna. La URL es tu `Authority` + `/.well-known/openid-configuration` o tu `MetadataAddress`.
Microsoft.IdentityModel.Protocols (.NET) — ConfigurationManager<OpenIdConnectConfiguration>, used by JwtBearer and OpenIdConnect handlers
Qué significa
El administrador de configuración no pudo descargar (o analizar) el documento de descubrimiento de OpenID Connect, así que el controlador de JWT bearer o de OpenID Connect no tiene emisor ni claves de firma. A partir de ahí se rechazan todos los tokens, y normalmente aparecen después errores IDX10500/IDX10503. El motivo real está en la excepción interna: IDX20108 cuando la dirección de metadatos es HTTP sin cifrar y se requiere HTTPS, o IDX20804 con un error de red o de TLS en los demás casos.
Por qué ocurre
Dirección de metadatos HTTP con RequireHttpsMetadata activado
frecuenteA los contenedores locales de Keycloak o IdentityServer se suele acceder como `http://service:8080`. `RequireHttpsMetadata` vale true por defecto, así que el componente que descarga los metadatos rechaza la dirección antes de conectarse (IDX20108).
La autoridad no es accesible desde la API
frecuenteUn DNS que solo resuelve fuera del clúster, un firewall o un proxy de salida, o una red de contenedores en la que `localhost` es el propio contenedor.
El certificado TLS no es de confianza
ocasionalLos certificados autofirmados o de una CA interna en el proveedor de identidad hacen fallar la solicitud HTTPS dentro del contenedor de la API, salvo que esa CA esté instalada allí.
Ruta de autoridad incorrecta
ocasionalSi falta `/realms/<name>` (Keycloak), el ID de inquilino o `/v2.0` (Entra ID), la URL de descubrimiento devuelve 404.
Cómo solucionarlo
- 1.
Permitir metadatos HTTP solo en desarrollo
Vincula `RequireHttpsMetadata = false` al entorno de desarrollo; en producción la autoridad debe ser HTTPS, porque las claves que descargas deciden qué tokens aceptas.
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.
Solicitar la URL desde donde se ejecuta la API
Lanza la solicitud dentro del contenedor o pod de la API. Un 200 con JSON confirma que la red y TLS funcionan; cualquier otra cosa indica la capa que hay que corregir.
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
Errores relacionados
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)