IdentityServer4 ApiResourceがJwtBearerOption.Audienceで機能しないのはなぜですか?

Aug 18 2020

IdentityServerに次の設定があります:

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

ASP.NET Core Web APIでのこのjwt構成:

 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,
           };
       });

Web API JwtBearerOption.Audienceが「MyApi」と等しくないため、WebAPI認証がIdentityServerからのトークンを受け入れないことを期待しています。しかし、私の構成では、オーディエンスは「https:// localhost:5001 / resources」に設定されている場合にのみ検証され、「MyApi」に設定されている場合は無効になります

私の質問に関連するIdentityServer4のドキュメント。

回答

1 ToreNestenius Aug 18 2020 at 14:30

MyApiをオーディエンスのリストに含めるには、IdentityServer4(v4.0x)の場合と同様にApiScopeを定義する必要があります。

詳細については、この記事を参照してください