Невалиден токен, получен от 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 не изпращайте идентификатора на клиента като първи параметър за придобиване на токен, ако искате токена за достъп

Изглежда, че използвах библиотеката погрешно.

Когато извиквате придобиванеToken и искате токена за достъп, не трябва да предоставяте 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