Не удалось получить токен носителя из Azure AD для использования с приложением API
У меня есть приложение MVC, которому требуется доступ к частному приложению API в Azure, которое защищено проверкой подлинности Azure AD. Поэтому мне нужно получить токен-носитель 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
какappIdUri
и вернул жетон на предъявителя. Но токен был дан с датой истечения в прошлом (около 1 минуты в прошлом). Так что я не мог ничего с этим поделать. И получил401-Unauthenticated
когда попытался использовать токен для входа в API App.
Что мне не хватает?