Pourquoi IdentityServer4 ApiResource ne fonctionne-t-il pas avec JwtBearerOption.Audience ?

Aug 18 2020

J'ai cette configuration dans IdentityServer :

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

et cette configuration jwt sur l'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,
           };
       });

Je m'attends à ce que l'authentification de l'API Web n'accepte pas le jeton d'IdentityServer car l'API Web JwtBearerOption.Audience n'est pas égal à "MyApi". Mais dans ma configuration, l'audience n'est validée que si l'audience est définie sur "https://localhost:5001/resources" et sera invalidée si je la définis sur "MyApi"

Documentation IdentityServer4 relative à ma question.

Réponses

1 ToreNestenius Aug 18 2020 at 14:30

Pour obtenir MyApi dans la liste des audiences, vous devez définir un ApiScope comme dans IdentityServer4 (v4.0x)

Voir cet article pour plus de détails