Perché IdentityServer4 ApiResource non funziona con JwtBearerOption.Audience?

Aug 18 2020

Ho questa configurazione in IdentityServer:

public static IEnumerable<ApiResource> ApiResources =>
        new ApiResource[]
        {
            new ApiResource
            {
                Name = "MyApi"
            }
        };

e questa configurazione jwt nell'API Web ASP.NET Core:

 services.AddAuthentication("Bearer")
       .AddJwtBearer("Bearer", options =>
       {
           //identity server
           options.Authority = "https://localhost:5001";

           //access token recepient
           options.Audience = "https://localhost:5001/resources";

           options.TokenValidationParameters = new TokenValidationParameters
           {
               ValidateAudience = true,
               ValidateLifetime = true,
           };
       });

Mi aspetto che l'autenticazione dell'API Web non accetti il ​​token da IdentityServer perché l'API Web JwtBearerOption.Audience non è uguale a "MyApi". Ma nella mia configurazione il pubblico viene convalidato solo se il pubblico è impostato su "https://localhost:5001/resources" e invaliderà se lo imposto su "MyApi"

Documentazione IdentityServer4 relativa alla mia domanda.

Risposte

1 ToreNestenius Aug 18 2020 at 14:30

Per inserire MyApi nell'elenco dei segmenti di pubblico è necessario definire un ApiScope come in IdentityServer4 (v4.0x)

Vedi questo articolo per maggiori dettagli