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
            );
}]);
Другие вопросы по тегам