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 hacer que la canalización de MVC autentique OIDC en .NET Core 5.

Estoy tratando de encontrar una manera de hacer que MVC autentique el token AzureAD oidc. Mi aplicación es solo de backend, sin inicio de sesión o cierre de sesión. Por lo tanto, quiero obtener las afirmaciones del usuario de OnAuthorizationAsync (** AuthorizationFilterContext ** context), pero siempre regresa vacío en httpcontext. Creo que podría ser algún tipo de problema de configuración en AddOpenIdConnect. Lo siguiente son mis configuraciones en ConfigureServices. ¿Qué se debe hacer para obtener más afirmaciones del usuario?

servicios.AddAuthentication (OpenIdConnectDefaults.AuthenticationScheme)
//.AddJwtBearer (JwtBearerDefaults.AuthenticationScheme, options => {}) // este no lo necesitas
.AddOpenIdConnect (“oidc”, opciones =>
{
opciones.ClientId = azureAdConfig.ClientId;
opciones.ConfigurationManager = new ConfigurationManager (azureAdConfig.EntryUrl, new OpenIdConnectConfigurationRetriever ());
});

Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
// enrutamiento y otras cosas
app.UseAuthentication();
app.UseAuthorization();
}

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que tiene la configuración correcta para su aplicación. Para obtener las afirmaciones del usuario desde OnAuthorizationAsync(AuthorizationFilterContext context), debe agregar el siguiente código a su método Configure:

    app.Use(async (context, next) =>
    {
        var user = context.User;
        if (user.Identity.IsAuthenticated)
        {
            var claims = await context.Authentication.GetAuthenticateInfoAsync("oidc");
            // Hacer algo con las afirmaciones
        }
        await next();
    });
    

    Esto le permitirá obtener las afirmaciones del usuario desde el método OnAuthorizationAsync.

Comments are closed.