2

2 つの Web アプリケーションがあります。

  • サイト A は、フロント エンド (Angular) であり、.NET コアで記述された Web API です。
  • サイト B は、.NET コアで記述された Web API です。

両方のサイトの Web API は同じです。認証は同じです。


テスト 1: サイト A に独自の API を使用してデータを取得するように依頼すると (サイト A の認証がオンになっている場合)、うまく機能します。

テスト 2: サイト A にサイト B を使用してデータを取得するように依頼すると (サイト B の認証がオフになっている場合)、うまく機能します。

テスト 3: サイト A にサイト B を使用してデータを取得するように依頼すると (サイト B の認証がオンになっている)、許可されていないエラー 401 で失敗します。

認証に使用しているコードは次のとおりです...

services.AddAuthentication(options =>
{
    options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
    options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer(o =>
{
    o.MetadataAddress = String.Format("https://login.microsoftonline.com/{0}/v2.0/.well-known/openid-configuration", Configuration["AzureAd:TenantId"]);
    o.Audience = Configuration["AzureAd:ClientId"];
});

そう...

トークンが正しく渡されていることはわかっています (テスト A のため)。

呼び出されているサイト B API がアクセス可能で正しいことはわかっています (テスト B のため)。

したがって、問題は Azure AD に渡される値にあると思います。Azure は、サイト A で取得され、サイト B で検証された (URI が異なる) トークンが "同じ" ではなく、したがって承認されていないとは考えていないと思います。

Azure を機能させるには、何を Azure に渡す必要がありますか?

ありがとう

4

1 に答える 1