ADAL JS - получение токена: операция обновления токена не выполнена из-за тайм-аута

Я работаю над тем, чтобы использовать AD для аутентификации и авторизации нескольких приложений, и в настоящее время я изучаю, как реализовать этот процесс.

Это для веб-браузера для потока веб-приложений.

Я создаю экземпляр AuthenticationContext и использую его для входа, и это нормально работает. (Организация кода упрощена для демонстрационных целей)

this.adal = new AuthenticationContext({
    tenant: this.tenantId,
    clientId: this.clientId,
    redirectUri: this.redirectUri,
    callback: this.loginCallback,
    popUp: true
});

this.adal.login();

Именно когда я пытаюсь приобрести токен, поведение становится подозрительным. Уместно сказать, что реестр этого приложения в AD имеет разрешение "Вход и чтение профиля пользователя" в Microsoft Graph API.

this.adal.acquireToken("https://graph.microsoft.com", function(error, token) {
    console.log(error);
    console.log(token);
});

Ошибка записывается в консоль следующим образом: "Ошибка обновления токена из-за тайм-аута"; В то время как токен записывается как нулевой объект. Краткий взгляд на вкладку "Сеть" при просмотре страницы с помощью Chrome показывает такой ресурс:

authorize?response_type=token&client_id=xxxxx&resource=xxxxx&redirect_uri=http://localhost:8080(.....)

Статус для указанного ресурса - 302.

Есть какие-нибудь подсказки? Спасибо!

1 ответ

Хорошо... кажется, что я понял это, с небольшой помощью из этой статьи нажмите на статью, и этот щелчок для очень интересной информации

Я заменил следующий бит кода в обратном вызове входа в систему

this.adal.acquireToken("https://graph.microsoft.com", function(error, token) {
    console.log(error);
    console.log(token);
});

за это:

var cachedToken = this.adal.getCachedToken(client_id_goes_here);
    if (cachedToken) {
        this.adal.acquireToken("https://graph.microsoft.com", function(error, token) {
            console.log(error);
            console.log(token);
        });
    }

И, наконец, просто добавьте эту строку кода в функцию, которая запускается после перенаправления метода acquToken на страницу:

this.adal.handleWindowCallback();

Надеюсь, что это полезно для тех, кто занимается этой проблемой!

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