私はAzure AD認証の簡単な例を作成しようとしています このサンプルを使用 私のクライアントがjQueryの場合は==。トークンが表示されている場合、オーディエンスに関する401のエラーが無効である理由はわかりません。オーディエンスがhttps://myportal.onmicrosoft.com/test_core_web_api_spa
の場合は無効です。これはAzureのAPI定義と一致します。唯一の欠けたピースはuser_impersonation
のカスタムスコープですが、MSAL clientApplication.acquireTokenSilent(tokenRequest2)
を使用して呼び出しを行うと、トークンを取得すると、スコープはAPIの完全なURLとスコープの完全なURLと一致します。
const tokenRequest2 = {
scopes: ["https://myportal.onmicrosoft.com/test_core_web_api_spa/user_impersonation"]
};
認証を確立するためのAPIでは、このコードを使用しています(私はこのメソッドを使用していません)
services.AddAuthentication(AzureADDefaults.BearerAuthenticationScheme)
.AddAzureADBearer(options => Configuration.Bind("AzureAd", options));
そしてAPIの構成
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"Domain": "myportal.onmicrosoft.com",
"TenantId": "my-tenant-guid",
"ClientId": "my-api-client-guid"
},
私はAPIのさまざまな形式を示す多くの例に注目しました(私はこれらが古いバージョンであるとします)が、露出したAPIスコープはhttps://myportal.onmicrosoft.com/test_core_web_api_spa/user_impersonation
としてAzureにリストされています。また、Azure Dashboardを使用してクライアントのGUIDを追加して、この公開されたAPIスコープにアクセスします。
私が間違っていたアイデアはどんなアイデアですか?あるいは、MSAL、クライアントのjQuery、および単純な.NET CORE Web APIを使用していますか?私が見つけたすべての例として、別のクライアントまたは別の認証方法を使用しています。
Web APIアプリのAzureでAPI設定を表示するための更新。( - === - )「APIの公開」画面の設定を示すAzureからのイメージを追加しました。カスタムスコープuser_impersonation
を追加し、クライアントを追加し、そのスコープへのアクセスを許可しました。ご覧のとおり、私のAzureサブスクリプションは他の人から見られたapi://guid
形式を持っていません。そのapi://guid
形式を使用しようとすると、エラーThe resource principal named api://guid was not found in the tenant
が表示されます。
トークンの画像も追加しました。 aud
タグはazureの私のWeb APIアプリ名と一致します。そしてscp
私が私のスコープ要求に添付されている範囲をリストします。他に何を試してもわかりません。
問題はWeb APIの構成データでした。彼らがClientId
彼らが本当に欲しいものを言うとき、 "APIの公開"オプション "Application ID URI"と表示されます。私がそこに置いていたことは、Web APIアプリケーション登録のGUIDがありました。以下はそれがどのように見えるべきかです。
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"Domain": "myportal.onmicrosoft.com",
"TenantId": "mytenant-guid",
"ClientId": "https://myportal.onmicrosoft.com/test_core_web_api_spa"
},
API形式で注意してください。アプリケーションを直接登録すると、露出APIの形式がapi://app-guid
になります。しかし、最初にVisual Studioを使用してアプリケーションを作成した場合、そのフォーマットはhttps:///myportal.onmicrosoft.com/project-name-in-visual-studio
のようなものにデフォルトになります。