AngularJS + ADAL.JS установить идентификатор ресурса (аудитория)
Как я могу использовать adal.js
в AngularJS, чтобы получить токен на предъявителя для аудитории https://management.azure.com
из моего кода JavaScript?
Я создал клиентское приложение в AD и установил его разрешения, чтобы разрешить ему доступ к "Windows Azure Service Management API". Мой код angularjs выглядит следующим образом:
adalService.init(
{
instance: "https://login.windows.net/",
tenant: "<something>.onmicrosoft.com",
clientId: "<some id>",
cacheLocation: 'localStorage',
redirectUri: 'http://localhost:63691/index.html#/configure',
endpoints: {
/* 'target endpoint to be called': 'target endpoint's resource ID' */
'https://management.azure.com/subscriptions?api-version=2014-04-01': 'https://management.azure.com/'
}
},
$httpProvider
);
Если я использую токен, полученный этим adalService в POSTMAN для вызова https://management.azure.com/subscriptions?api-version=2014-04-01
Я получаю следующую ошибку:
The access token has been obtained from wrong audience or resource '<some id>'.
It should exactly match (including forward slash) with one of the allowed audiences 'https://management.core.windows.net/','https://management.azure.com/'.
1 ответ
Итак, я нашел решение после просмотра исходного кода ADAL.JS здесь. В строке 137 он смотрит на config.loginResource
чтобы увидеть, был ли он установлен при прохождении config
возражать против init()
функция.
Выкладываю это на всякий случай:
Если вам нужен ваш токен для запроса " https://management.azure.com/" (или любого другого ресурса URI), вы можете настроить аудиторию при инициализации AuthenticationContext следующим образом:
app.config(['$routeProvider', '$httpProvider', 'adalAuthenticationServiceProvider', function ($routeProvider, $httpProvider, adalService) {
adalService.init(
{
instance: "https://login.microsoftonline.com/",
tenant: "<something>.onmicrosoft.com",
clientId: "<client-id>",
cacheLocation: 'localStorage', //optional
redirectUri: '<redirect-uri>',
loginResource: 'https://management.azure.com/' //to set AUDIENCE
},
$httpProvider
);
}]);