No se puede obtener el token de portador de Azure AD para usarlo con la aplicación API
Tengo una aplicación MVC que necesita acceder a una aplicación API privada en Azure que está protegida con autenticación de Azure AD. Entonces, necesito obtener el token de portador de Azure AD, transferirlo aZumo-Auth
token y úselo para acceder a la aplicación API.
Estoy pasando poreste tutorial y todo funciona bien hasta el punto en que necesito solicitar el tokenauthContext
. Aquí está el fragmento de un 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);
La línea conauthContext.AcquireToken(appIdUri, credential)
es el que causa problemas
Como siappIdUri
doyhttps://MyAppGateway-814485545465FAKE4d5a4532cd.azurewebsites.net/login/aad
, Obtengo una excepción:
400: AdalServiceException: AADSTS50001: Recurso 'https://MyAppGateway-814485545465FAKE4d5a4532cd.azurewebsites.net/login/aad'no está registrado para la cuenta.
Pero esta línea exacta está en la lista deReply Url
en la aplicación AD
Cuando trato de usarhttps://MyADDomain.onmicrosoft.com/MyAppName
ohttps://MyADDomain.onmicrosoft.com/
comoappIdUri
Recibo un mensaje de excepción diferente:
400: AdalServiceException: AADSTS50105: la aplicación '04472E33-2638-FAKE-GUID-F826AF4928DB' no está asignada a un rol para la aplicación 'https://MyADDomain.onmicrosoft.com/MyAppName'
O
400: AdalServiceException: AADSTS50105: la aplicación '04472E33-2638-FAKE-GUID-F826AF4928DB' no está asignada a un rol para la aplicación 'https://MyADDomain.onmicrosoft.com/'
En ambos casos tuve elApp ID URI
en la aplicación AD establecida en 'https://MyADDomain.onmicrosoft.com/MyAppName'o'https://MyADDomain.onmicrosoft.com/'. Y ambos nombres en la lista deReply URL
.
Finalmente, después de suficientes intentos, he puestohttps://graph.windows.net
comoappIdUri
y recuperé la ficha del portador. Pero el token se entregó con fecha de vencimiento en el pasado (aproximadamente 1 minuto en el pasado). Así que no podría hacer nada más con esto. Y consiguió401-Unauthenticated
cuando trató de usar el token para iniciar sesión en la aplicación API.
¿Qué me estoy perdiendo?