Compartir a través de


IDX10501 errores de validación de firmas en aplicaciones de Id. de Microsoft Entra

Si una aplicación cliente obtiene un token de acceso de Microsoft Entra ID y lo envía a una aplicación de recursos (API), la aplicación de recursos debe validar el token. Valida mediante el uso de la clave pública del certificado que se usó para firmar el token. Si la aplicación no encuentra el identificador de clave correcto (kid), podría generar un mensaje de error similar al siguiente:

IDX10501: error de validación de firma. No se puede encontrar 'kid'

Para resolver errores de validación de firma de token como "IDX10501", asegúrese de que la aplicación está configurada para recuperar la clave pública correcta de Microsoft Entra ID. Utilice el descubrimiento de claves o el punto de conexión de metadatos adecuado, en función del tipo de aplicación y la configuración de firma.

Para aplicaciones de recursos de OAuth2

En los pasos siguientes se muestra cómo una aplicación de OAuth2 valida un token emitido desde el identificador de Entra de Microsoft:

  1. Use un cliente de API para realizar un flujo de código de autorización y adquirir un token.

  2. Descodifique el token mediante jwt.ms y anote .kid

  3. En función de la versión de la aplicación de Microsoft Entra ID, utilice el token como token de portador para llamar a uno de los siguientes puntos de conexión de descubrimiento de claves. La API devuelve tres claves. El kid que obtuvo en el paso 2 debe coincidir con una de las claves que devuelve el endpoint de descubrimiento de claves.

    Para las aplicaciones v1.0, use:

    https://login.microsoftonline.com/common/discovery/keys
    

    Para las aplicaciones v2.0, use:

    https://login.microsoftonline.com/common/discovery/v2.0/keys
    

Para aplicaciones de recursos SAML

Para SAML, Microsoft Entra ID usa el certificado específico de la aplicación para firmar tokens. Para recuperar la clave pública correcta, siga estos pasos:

  1. Use el cliente de API para adquirir un token de acceso para la aplicación SAML.

  2. Utiliza el siguiente endpoint de descubrimiento de claves, reemplazando <tenant> y <SAML App ID> con tus valores.

    https://login.microsoftonline.com/<tenant>/discovery/keys?appid=<SAML App ID>
    
  3. Si tu aplicación utiliza claves de firma propias que emplean una directiva de asignación de reclamaciones, debes anexar un appid parámetro de consulta que contenga el identificador de cliente de la aplicación. Este paso es necesario para recuperar un jwks_uri que apunte a la información de clave de firma específica de la aplicación. Por ejemplo:

    https://login.microsoftonline.com/{tenant}/v2.0/.well-known/openid-configuration?appid=6731de76-14a6-49ae-97bc-6eba6914391e
    

Ejemplos de configuración de middleware

Para evitar errores de validación de firmas, configure el middleware para usar el punto de conexión de metadatos correcto.

Middleware de OpenID Connect (OWIN)

app.UseOpenIdConnectAuthentication(
    new OpenIdConnectAuthenticationOptions
    {
        ClientId = clientId,
        Authority = authority,
        RedirectUri = redirectUri,
        MetadataAddress = "https://login.microsoftonline.com/<tenant>/.well-known/openid-configuration?appid=<SAML App ID>",
        PostLogoutRedirectUri = redirectUri,
    });

Middleware de autenticación de portador JWT

app.UseJwtBearerAuthentication(new JwtBearerOptions
{
    Audience = "...",
    Authority = "...",
    MetadataAddress = "https://login.microsoftonline.com/<tenant>/.well-known/openid-configuration?appid=<SAML App ID>",
    TokenValidationParameters = new TokenValidationParameters
    {
        // Additional validation parameters
    }
});

Microsoft.Identity.Web (Aplicación web)

services.AddMicrosoftIdentityWebAppAuthentication(Configuration)
        .EnableTokenAcquisitionToCallDownstreamApi()
        .AddInMemoryTokenCaches();

services.Configure<MicrosoftIdentityOptions>(options =>
{
    options.MetadataAddress = "https://login.microsoftonline.com/<tenant>/.well-known/openid-configuration?appid=<SAML App ID>";
});

Microsoft.Identity.Web (API web)

services.AddMicrosoftIdentityWebApiAuthentication(Configuration);

services.Configure<JwtBearerOptions>(JwtBearerDefaults.AuthenticationScheme, options =>
{
    options.MetadataAddress = "https://login.microsoftonline.com/<tenant>/.well-known/openid-configuration?appid=<SAML App ID>";
});

Pasos siguientes

Para obtener más información sobre el cambio de claves de firma de Microsoft Entra ID, consulte Tokens de acceso en la plataforma de identidad de Microsoft.

Ponte en contacto con nosotros para obtener ayuda

Si tiene preguntas o necesita ayuda, cree una solicitud de soporte o busque consejo en la comunidad de Azure. También puede enviar comentarios sobre el producto a la comunidad de comentarios de Azure.