Azure AD 認証で保護されている Azure のプライベート API アプリにアクセスする必要がある MVC アプリケーションがあります。そのため、Azure AD ベアラー トークンを取得し、それをZumo-Auth
トークンに転送し、それを使用して API アプリにアクセスする必要があります。
私はこのチュートリアルを進めており、からトークンを要求する必要がある時点まで、すべてが正常に機能していますauthContext
。コードのスニペットは次のとおりです。
var authContext = new AuthenticationContext(
"https://login.microsoftonline.com/MyADDomain.onmicrosoft.com");
ClientCredential credential = new ClientCredential(
"04472E33-2638-FAKE-GUID-F826AF4928DB",
"OMYAPIKEY1x3BLAHEMMEHEHEHEHEeYSOMETHINGRc=");
// Get the AAD token.
var appIdUri =
"https://MyAppGateway-814485545465FAKE4d5a4532cd.azurewebsites.net/login/aad";
//var appIdUri = "https://MyADDomain.onmicrosoft.com/MyAppName";
//var appIdUri = "https://MyADDomain.onmicrosoft.com/";
//var appIdUri = "https://graph.windows.net";
AuthenticationResult result =
authContext.AcquireToken(appIdUri, credential); // <-- can't get the token from AD
// downhill from here
var aadToken = new JObject();
aadToken["access_token"] = result.AccessToken;
var appServiceClient = new AppServiceClient(
"https://MyAppGateway-814485545465FAKE4d5a4532cd.azurewebsites.net/");
// Send the AAD token to the gateway and get a Zumo token
var appServiceUser = await appServiceClient.LoginAsync("aad", aadToken);
の行がauthContext.AcquireToken(appIdUri, credential)
問題の原因です。
appIdUri
私が与えるようhttps://MyAppGateway-814485545465FAKE4d5a4532cd.azurewebsites.net/login/aad
に、例外が発生した場合:
400: AdalServiceException: AADSTS50001: リソース ' https://MyAppGateway-814485545465FAKE4d5a4532cd.azurewebsites.net/login/aad ' がアカウントに登録されていません。
しかし、この正確な行はReply Url
ADアプリケーションのリストにあります
使用しようとしたとき、https://MyADDomain.onmicrosoft.com/MyAppName
または別の例外メッセージが表示https://MyADDomain.onmicrosoft.com/
されたとき:appIdUri
400: AdalServiceException: AADSTS50105: アプリケーション '04472E33-2638-FAKE-GUID-F826AF4928DB' は、アプリケーション ' https://MyADDomain.onmicrosoft.com/MyAppName 'のロールに割り当てられていません
または
400: AdalServiceException: AADSTS50105: アプリケーション '04472E33-2638-FAKE-GUID-F826AF4928DB' は、アプリケーション ' https://MyADDomain.onmicrosoft.com/ 'のロールに割り当てられていません
どちらの場合もApp ID URI
、AD アプリケーションで ' https://MyADDomain.onmicrosoft.com/MyAppName ' または ' https://MyADDomain.onmicrosoft.com/ ' に設定しました。のリストにある両方の名前ですReply URL
。
最終的に、十分な試行を重ねた後、https://graph.windows.net
asappIdUri
を入れて、ベアラー トークンを取り戻しました。しかし、トークンは過去の有効期限 (過去約 1 分) で与えられました。そのため、これ以上何もできませんでした。401-Unauthenticated
トークンを使用して API アプリにログインしようとしたときに取得しました。
私は何が欠けていますか?