1

Как я могу использовать adal.js в AngularJS, чтобы получить токен-носитель для аудитории https://management.azure.com с моего javascript-кода?AngularJS + ADAL.JS set Идентификатор ресурса (Аудитория)

Я создал клиентское приложение в AD и установил его разрешения для доступа к «API управления сервисами Windows Azure». Мой 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/'. 

ответ

4

Ладно, так что я нашел решение после того, как происходит через исходный код 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 
      ); 
}]); 
+0

Могу ли я спросить вас, как вы это сделали? Я хочу знать, почему вы не использовали конечную точку в своем adalService.init? –

+0

Он прошел проверку подлинности, но теперь столкнулся с бесконечным циклом или обновил токен. – Jaanus

+0

@Jaanus У меня была такая же проблема. Если вы подождете достаточно долго, вы увидите, что это не бесконечный цикл. Через некоторое время он перестает освежать. К сожалению, я не понял, почему это происходит. –