認証タイプとして「仕事または学校アカウント」を持つASP.Net Web API(.Net Framework)アプリケーションを作成しました。これにより、AzureサブスクリプションにこのAPIアプリケーションが自動的に登録され、"App Registrations"の下に表示されます。ホームページURLがlocalhost addressを指しているのがわかります。 APIがローカルホストアドレスでローカルに起動していることがわかります。次にAzure ADからアクセストークンを取得するためにFiddlerを起動します。エンドポイントhttps://login.microsoftonline.com/<mytenant>.onmicrosoft.com/oauth2/token
への私のPOSTリクエスト。次の4つのパラメータがありますAzure ADのFiddlerでこのリクエストの承認が拒否されました
grant_type=client_credentials
&client_id=<appid from Azure AD Portal>
&client_secret=<secret from Azure AD Portal>
&resource=<appid from Azure AD Portal>
トークンバックを取得しました。このトークンを解読すると、私はaud
とappid
を期待通りに見ます(Azure ADのappidと一致します)。このトークンをベアラトークンとして使用して、https://localhost:44374/api/values
にGETリクエストのAuthorization: Bearer <mytoken>
ヘッダーを追加してAPI呼び出しを呼び出します。しかし、私のAPIへのこのGET呼び出しは私に{"Message":"Authorization has been denied for this request."}
エラーメッセージを返しています。
私には何が欠けていますか?
Yup!それだった! 'resource'は' ida:Audience' API設定値と一致する必要があります。以前は、私のAPI設定値がURI 'https:// xxxxx.onmicrosoft.com/WebApplicationName'を使用していました。私は' resource'として 'clientid'を渡していました。どちらの値も一貫している限り動作します。つまり、Web API設定の 'App ID URI'を' resource'として使うか、 'client_id'をWeb APIの設定値と' resource'として使用してください。 – Mahesh
回答が役に立ったら、回答を受け入れると考えてください。問題。 –