Почему IdentityServer4 ApiResource не работает с JwtBearerOption.Audience?

Aug 18 2020

У меня в IdentityServer есть такая конфигурация:

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

и эта конфигурация jwt в веб-API 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,
           };
       });

Я ожидаю, что проверка подлинности веб-API не примет токен от IdentityServer, поскольку веб-API JwtBearerOption.Audience не равно «MyApi». Но в моей конфигурации аудитория проверяется только в том случае, если аудитория установлена ​​на «https: // localhost: 5001 / resources», и будет недействительной, если я установлю ее на «MyApi».

Документация IdentityServer4 по моему вопросу.

Ответы

1 ToreNestenius Aug 18 2020 at 14:30

Чтобы включить MyApi в список аудиторий, вам необходимо определить ApiScope, как и в IdentityServer4 (v4.0x).

См. Эту статью для получения более подробной информации.