Estoy tratando de autorizar mis solicitudes utilizando un servicio externo con IdentityServer4. Yo uso el siguiente código

services.AddAuthentication("Bearer")
    .AddJwtBearer("Bearer", options =>
    {
        options.Authority = Configuration["IdentityUrl"];
        options.RequireHttpsMetadata = false;

        options.Audience = "myapi";
    });

Obtuve mi token usando un cliente token

var tokenResponse = await tokenClient.RequestPasswordTokenAsync(
       new PasswordTokenRequest
       {
           ClientId = clientId,
           ClientSecret = clientSecret,
           GrantType = GrantTypes.Password,
           Address = discoveryDocument.TokenEndpoint,
           UserName = user.UserName,
           Password = user.PasswordHash,
       });

Funciona y me da un token, pero luego, cuando intento autorizar cualquier solicitud al incluir este token en el encabezado de autorización, me da 401 sin explicación. No veo nada en la salida de la aplicación del servidor de idenity ni de mi aplicación cliente. Esto es lo que hago en cartero para probar la autorización. ingrese la descripción de la imagen aquí

¿Alguna idea sobre qué está mal y cómo depurarlo?

0
KirillSk 26 ago. 2020 a las 17:02

1 respuesta

La mejor respuesta

¿Intenta ver lo que dicen los registros?

O intente establecer este en verdadero en las opciones de AddJwtBearer y luego mire la respuesta de la API para ver si contiene algunos detalles adicionales sobre la falla.

options.IncludeErrorDetails = true;

Si funciona, debería ver un encabezado de autenticación WWW adicional, como este:

HTTP/1.1 401 Unauthorized
Date: Sun, 02 Aug 2020 11:19:06 GMT
WWW-Authenticate: Bearer error="invalid_token", error_description="The signature is invalid"
0
Tore Nestenius 26 ago. 2020 a las 18:36