Mengapa IdentityServer4 ApiResource tidak berfungsi dengan JwtBearerOption.Audience?

Aug 18 2020

Saya memiliki konfigurasi ini di IdentityServer:

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

dan konfigurasi jwt ini di ASP.NET Core web API:

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

Saya berharap bahwa otentikasi API Web tidak akan menerima token dari IdentityServer karena JwtBearerOption.Audience API Web tidak sama dengan "MyApi". Namun dalam konfigurasi saya, Audiens hanya divalidasi jika audiens disetel ke "https: // localhost: 5001 / resources" dan akan tidak valid jika saya menyetelnya ke "MyApi"

Dokumentasi IdentityServer4 tentang yang terkait dengan pertanyaan saya.

Jawaban

1 ToreNestenius Aug 18 2020 at 14:30

Untuk memasukkan MyApi ke dalam daftar audiens, Anda perlu mendefinisikan ApiScope seperti yang akan dilakukan di IdentityServer4 (v4.0x)

Lihat artikel ini untuk lebih jelasnya