¿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?
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:
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.