Недействительный токен получен от adal.js

Я пытаюсь создать небольшое клиентское веб-приложение с adal.js (в настоящее время без угловой части).

Мне удалось войти в систему и получить аутентифицированный пользовательский объект. Однако, по-видимому, я получаю недопустимый токен OAuth от API.

Конфигурация, которую я отправляю экземпляру AuthenticationContext:

var config = {
    instance: 'https://login.microsoftonline.com/',
    tenant: 'dbaa88b3-...',
    clientId: 'f81bede8-...',
    postLogoutRedirectUri: window.location.href,
    cacheLocation: 'localStorage', 
};

Не уверены, что это должен быть идентификатор арендатора или имя арендатора?

Затем, когда я аутентифицирован, я использую

var context = new AuthenticationContext(config);
context.acquireToken(context.config.clientId, function(error, token) {
       // error is null
       var now = new Date();
       $.ajax({
          url: "https://outlook.office365.com/api/v1.0/me/calendarview",
          method: "GET",
          data: {
             "startdatetime": (new Date()).toISOString(),
             "enddatetime": (new Date()).toISOString()
          },
          headers: {
             "Authorization": "Bearer " + token,
             "Accept": "application/json; odata.metadata=full",
             "Client-Request-Id": clientid, // Some unique machine id?
             "User-Agent": navigator.userAgent,
             "Date": now.toUTCString()
          }
       }).then(function(result) {},
       function(e) {
          console.error(e);
          // 401 response, x-ms-diagnostics header = 2000005;reason="The PUID value was not found for [ORGID] identity.";error_category="invalid_user"
       });     
});

Если я вручную ввожу токен аутентификации, сгенерированный с той же учетной записью на https://oauthplay.azurewebsites.net/, удается.


person vikke    schedule 29.05.2015    source источник
comment
Не могли бы вы использовать этот сайт для декодирования двух токенов и сравнения: jwt.io   -  person Rich Randall    schedule 29.05.2015


Ответы (1)


tl;dr не отправляйте идентификатор клиента в качестве первого параметра дляAcquireToken, если вам нужен токен доступа

Похоже, я неправильно использовал библиотеку.

При вызове AcquireToken и вам нужен токен доступа, вы не должны указывать clientId в качестве первого параметра, тогда вы получите токен идентификации (это можно было понять с помощью http://jwt.io/#, спасибо @rich-randall). По крайней мере, так я интерпретирую код .

Поэтому я предоставлял идентификацию вместо токена доступа к API, который не содержит значения «puid», отсюда и сообщение об ошибке:

// 401 response, x-ms-diagnostics header = 2000005;reason="The PUID value was not found for [ORGID] identity.";error_category="invalid_user"

Теперь я могу извлекать данные из API.

person vikke    schedule 01.06.2015
comment
Если не clientId, то что нужно передать. Если он пустой, это не работает - person NitinSingh; 12.06.2018
comment
Пожалуйста, опубликуйте свое полное решение от начала до конца. Существует несколько проблем при получении действительного токена для вызова API графа. - person NitinSingh; 12.06.2018