Não foi possível obter o token do portador do Azure AD para usar com o API App
Eu tenho um aplicativo MVC que precisa acessar o aplicativo API privado no Azure protegido com autenticação do Azure AD. Portanto, preciso obter o token de portador do Azure AD, transferi-lo paraZumo-Auth
token e use-o para acessar o aplicativo API.
Eu estou passandoeste tutorial e tudo está funcionando bem até o momento em que preciso solicitar o token deauthContext
. Aqui está o trecho de um código:
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);
A linha comauthContext.AcquireToken(appIdUri, credential)
é o que está causando problemas.
Como seappIdUri
eu douhttps://MyAppGateway-814485545465FAKE4d5a4532cd.azurewebsites.net/login/aad
, Recebo exceção:
400: AdalServiceException: AADSTS50001: Recurso 'https://MyAppGateway-814485545465FAKE4d5a4532cd.azurewebsites.net/login/aad'não está registrado para a conta.
Mas essa linha exata está na lista deReply Url
no aplicativo AD
Quando tento usarhttps://MyADDomain.onmicrosoft.com/MyAppName
ouhttps://MyADDomain.onmicrosoft.com/
ComoappIdUri
Recebo uma mensagem de exceção diferente:
400: AdalServiceException: AADSTS50105: O aplicativo '04472E33-2638-FAKE-GUID-F826AF4928DB' não está atribuído a uma função do aplicativo 'https://MyADDomain.onmicrosoft.com/MyAppName'
Ou
400: AdalServiceException: AADSTS50105: O aplicativo '04472E33-2638-FAKE-GUID-F826AF4928DB' não está atribuído a uma função do aplicativo 'https://MyADDomain.onmicrosoft.com/'
Nos dois casos, tive aApp ID URI
no aplicativo AD definido como "https://MyADDomain.onmicrosoft.com/MyAppName'ou'https://MyADDomain.onmicrosoft.com/' E os dois nomes na lista deReply URL
.
Eventualmente, depois de várias tentativas eu coloqueihttps://graph.windows.net
ComoappIdUri
e recuperou o token do portador. Mas o token foi fornecido com data de validade no passado (cerca de 1 minuto no passado). Então não pude fazer mais nada com isso. E pegou401-Unauthenticated
quando tentou usar o token para fazer login no API App.
o que estou perdendo?