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 に渡す必要がありますか?
ありがとう