access_token не требуется для неявного потока грантов?

Мы пытаемся интегрировать adal.js для доступа к EWS API, и наше приложение реализовано с использованием Angular 1.5.8. После успешного входа в систему он перенаправляет обратно на домашнюю страницу приложения с id_token. Согласно следующей ссылке от MS: https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-v2-protocols-implicit мы предполагаем использовать access_token вместо id_token для общения с EWS API.

Теперь, когда вы зарегистрировали пользователя в своем одностраничном приложении, вы можете получить токены доступа для вызова веб-API, защищенных Azure AD, таких как Microsoft Graph.

Итак, мы пытаемся использовать adalAuthenticationService.acquireToken с действительным clientId. Но полученный нами токен такой же, как id_token, Что-то мы сделали не так?

 // configure our routes
 testApp.config(function($httpProvider, $locationProvider, $routeProvider, adalAuthenticationServiceProvider) {

  $locationProvider.html5Mode({
    enabled: true,
    requireBase: false
  }).hashPrefix('!');

  $routeProvider

   // route for the home page
   .when('/', {
    templateUrl : 'pages/home.html',
    controller  : 'mainController',
    requireADLogin: true
   })

        adalAuthenticationServiceProvider.init({
            // clientId is the identifier assigned to your app by Azure Active Directory.
            clientId: "TEST_CLIENT_ID",
            cacheLocation: 'localStorage', // optional cache location default is sessionStorage
        }, $httpProvider);
  
 });

 // create the controller and inject Angular's $scope
 testApp.controller('mainController', function($scope, adalAuthenticationService) {
  // create a message to display in our view
  $scope.message = 'Everyone come and see how good I look!';
  $scope.getAccessToken = getAccessToken;

  function getAccessToken() {
   adalAuthenticationService.acquireToken('TEST_CLIENT_ID', (newToken) => {
    console.log('Access token aquired: ' + newToken);
   }, (error) => {
    console.log('ERROR with token: ' + angular.toJson(error, true));
   });
  };
 });

1 ответ

Решение

Код, похоже, не говорит acquireToken вызовите, для какого ресурса он хочет получить токен. Вы устанавливаете это где-нибудь еще?

В противном случае вы должны добавить URL ресурса " https://outlook.office365.com/" в качестве параметра ресурса в acquireToken вызов.

Другие вопросы по тегам