es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo agregar el tipo de concesión en el token de acceso en IdentityServer4?

Necesito saber el tipo de concesión del cliente (o tipo de flujo de OAuth) en mi API protegida por IdentityServer4, pero no estoy seguro de cómo hacerlo. Supongo que necesito agregar el tipo de concesión al token de acceso. ¿Alguien puede ayudarme señalándome instrucciones/documentación o código de muestra?

ACTUALIZACIÓN

Bajo el modelo estándar de EF de IdentityServer4, mi almacén de datos de SQL Server tiene una tabla de ClientGrantTypes y una tabla de ClientClaims (ver captura de pantalla a continuación). Supongo que necesito crear un registro de ClientClaims que se relacione con ClientGrantTypes. Si es SQL, simplemente puedes unir las tablas en ClientID, pero ¿cómo se implementa aquí para obtener el Tipo de Concesión en el token de acceso?

enter image description here

Tags:  

Answer

  1. Avatar for davy.ai

    Para obtener el tipo de concesión del cliente en una API protegida por IdentityServer4, no es necesario agregar el tipo de concesión al token de acceso. En su lugar, puedes acceder a esta información a través de HttpContext en tu API utilizando el método GetTokenAsync.

    Aquí tienes un ejemplo de cómo recuperar el tipo de concesión:

    //obtener el token de acceso de HttpContext
    var accessToken = await HttpContext.GetTokenAsync("access_token");
    
    //utilizar el paquete IdentityServer4.AccessTokenValidation para analizar el token de acceso
    var handler = new JwtSecurityTokenHandler();
    var token = handler.ReadJwtToken(accessToken);
    
    //obtener el tipo de concesión del token
    var grantType = token.Claims.FirstOrDefault(c => c.Type == "grant_type").Value;
    

    Este código lee el token de acceso de HttpContext, lo analiza utilizando el paquete IdentityServer4.AccessTokenValidation y recupera el tipo de concesión del token.

    Ten en cuenta que el tipo de concesión se incluye en el token de acceso de forma predeterminada, por lo que no es necesario agregarlo al token tú mismo.

    En cuanto a la tabla ClientGrantTypes y la tabla ClientClaims en el modelo EF de IdentityServer4, estas tablas se utilizan para almacenar información sobre los clientes y sus concesiones y reclamaciones asociadas. Puedes utilizarlas para personalizar el comportamiento de tu servidor IdentityServer4, pero no deberías necesitar modificarlas para recuperar el tipo de concesión en tu API como se describe anteriormente.

Comments are closed.