Skip to content

Discovery OAuth2/OIDC ​

Fuente: BASE_URL_IDP/.well-known/openid-configuration

El discovery permite que el cliente no tenga endpoints hardcodeados y obtenga metadatos oficiales del proveedor.

Metadatos principales ​

  • issuer: BASE_URL_IDP
  • authorization_endpoint: BASE_URL_IDP/auth/public/authorize/
  • token_endpoint: BASE_URL_IDP/oauth2/token
  • userinfo_endpoint: BASE_URL_IDP/oidc/userinfo
  • jwks_uri: BASE_URL_IDP/.well-known/jwks.json
  • introspection_endpoint: BASE_URL_IDP/oauth2/introspect
  • revocation_endpoint: BASE_URL_IDP/oauth2/revoke
  • end_session_endpoint: BASE_URL_IDP/auth/logout/client

Cómo consumir discovery en runtime ​

  1. Cargar el documento de discovery al iniciar la aplicación o en bootstrap de autenticación.
  2. Cachear metadatos en memoria con TTL corto (por ejemplo, 5 a 15 minutos).
  3. Usar exclusivamente endpoints publicados por discovery para reducir desalineaciones por cambios del proveedor.

Ejemplo:

bash
curl -sS 'BASE_URL_IDP/.well-known/openid-configuration'

Capacidades declaradas ​

  • response_types_supported: code
  • response_modes_supported: query
  • grant_types_supported:
    • authorization_code
    • refresh_token
    • client_credentials
  • code_challenge_methods_supported: S256
  • id_token_signing_alg_values_supported: RS256
  • token_endpoint_auth_methods_supported:
    • client_secret_post
    • client_secret_basic

Interpretación práctica:

  • response_types_supported: code confirma que el login debe implementarse con código de autorización.
  • code_challenge_methods_supported: S256 confirma uso de PKCE en modo seguro.
  • id_token_signing_alg_values_supported: RS256 indica que la verificación de firma usa clave pública RSA (JWKS).
  • token_endpoint_auth_methods_supported define cómo autenticar cliente en /oauth2/token (según tipo de cliente).

Scopes soportados ​

  • openid
  • profile
  • email
  • directory:all:users:read
  • directory:external:users:read
  • directory:internal:users:read
  • directory:admin:users:read

Recomendación:

  • Solicitar solo scopes mínimos por principio de mínimo privilegio.
  • Para login base, comenzar con: openid profile email.
  • Agregar scopes de directorio solo cuando el caso de uso lo requiera.
  • El sistema puede definir scopes adicionales para el acceso a datos específicos de Identidad, como los datos de ciudadanía.
  • El sistema puede definir scopes dinámicos para la incorporación de nuevos servidores de recursos que deleguen autorización a la plataforma de identidad.
  • Para consultar la existencia y forma de uso de scopes adicionales consultar al equipo de informática de la Escuela de Jueces del Estado.

Claims soportados ​

  • sub
  • name
  • given_name
  • family_name
  • email
  • nro_documento_identidad
  • tipo_documento_identidad
  • amr
  • acr
  • auth_time
  • nonce
  • at_hash
  • iat
  • exp
  • iss
  • aud
  • tipo_usuario
  • is_eje_sysadmin

Validación de tokens y firma ​

Para id_token o JWT firmados con RS256:

  1. Obtener llaves en jwks_uri.
  2. Buscar la llave por kid del header del token.
  3. Verificar firma y validar claims críticos: iss, aud, exp, iat, nonce (si aplica).

Esto sigue OIDC Core y los RFC 7517/7519.