signinSilentCallback с oidc-client, получающим пользователя, не найденного в хранилище

Я использую oidc-client 1.3.0 с приложением angular 4. Начальная аутентификация (signinRedirect) работает нормально. Но, когда токен истекает, он загружает silent-Renew.js и пытается сделать:

Oidc.UserManager().signinSilentCallback();

Выдается сообщение об ошибке (или сообщение некоторого уровня) «Пользователь не найден в хранилище». Следовательно, пользователь не получает обновленную информацию о новом токене.

Когда я вхожу в oidc-client, я вижу, что он завершается с помощью Promise.resolve (), куда я ожидал, что он отправит пользователя.

Из UserManager.js пользователь возвращается как undefined:

signinSilentCallback(url) {
    Log.debug("UserManager.signinSilentCallback");
    return this._signinCallback(url, this._iframeNavigator).then(user => {
        if (user) {
            if (user.profile && user.profile.sub) {
                Log.info("signinSilentCallback successful, signed in sub: ", user.profile.sub);
            }
            else {
                Log.info("signinSilentCallback successful");
            }
        }

        return user;
    });

Из IFrameNavigator.js, где разрешено обещание:

callback(url) {
    Log.debug("IFrameNavigator.callback");

    try {
        IFrameWindow.notifyParent(url);
        return Promise.resolve();
    }
    catch (e) {
        return Promise.reject(e);
    }
}

Если у вас это работает в вашем приложении angular4 (или, я не привередлив, в другом приложении), помогите мне :)


person Michael Witt    schedule 31.10.2017    source источник


Ответы (1)


Похоже, я следил за отвлекающим маневром с этим сообщением «Пользователь не найден в хранилище», поскольку там действительно не было проблемы. Проблема, с которой я столкнулся, заключалась в обновлении заголовка авторизации, чтобы включить обновленный токен. Как только я получил это, все было счастливым.

person Michael Witt    schedule 01.11.2017
comment
Пожалуйста, объясните подробнее - person skydev; 27.03.2019