¿Cómo encontrar el tipo de flujo de OAuth desde el controlador después de la autenticación?
Utilizo IdentityServer4 para proteger mi API basada en .Net Core. En mis controladores de API, necesito determinar qué tipo de flujo de autenticación (credencial de cliente, código de autorización, etc.) está utilizando el cliente. Pero no puedo encontrarlo en ClaimsPrincipal o en cualquier otro lugar. ¿Cómo puedo encontrar el flujo desde el controlador de API?
davy.ai
Para determinar el flujo de autenticación que está siendo utilizado por el cliente en tus controladores de API de .Net Core con IdentityServer4, puedes acceder al método de extensión
GetAuthenticationInfoAsync
del interfazIHttpContextAccessor
. Este método devuelve un objetoAuthenticationProperties
que contiene información sobre el flujo de autenticación actual.Aquí tienes un ejemplo de cómo acceder al objeto
AuthenticationProperties
en tu controlador de API:En este ejemplo,
authenticationInfo.Properties.Items["amr"]
recupera el valor de la propiedad “amr” del objetoAuthenticationProperties
. Esta propiedad contiene la referencia del método de autenticación, que identifica el flujo de autenticación que está siendo utilizado (por ejemplo, “client_credentials” o “authorization_code”).Al acceder al objeto
AuthenticationProperties
de esta manera, puedes determinar el flujo de autenticación que está siendo utilizado por el cliente en tus controladores de API con IdentityServer4.