Проблема истечения срока действия токена при использовании oidc-клиента? - PullRequest
0 голосов
/ 01 июля 2019

У меня есть сайт, который использует IS4, а внешний интерфейс - Angular 7. У меня есть библиотека oidc-client для обработки всех аутентификаций пользователей и т. Д., И все работает отлично.Впервые я вижу эту проблему, хотя.Я могу войти в систему и взаимодействовать просто отлично, с моими разрешениями, ролями и все это хорошо.Иногда я получаю странную ошибку после некоторого бездействия, поэтому, когда я пытаюсь выполнить безопасную операцию, я сразу получаю сообщение об ошибке, даже не затрагивая мой API.Если я обновлю страницу и выполню действие, оно будет работать нормально.

Я реализовал silent renew callback в своем компоненте так:

@Component({
    selector: 'app-silent-renew-callback',
    templateUrl: 'silent-renew-callback.component.html'
})
export class SilentRenewCallbackComponent implements OnInit {
    constructor(private authService: AuthService) { }

    ngOnInit() {
        this.authService.signingSilentCallback();
    }
}

, который затем отправляется на authServicecode:

signingSilentCallback(): Promise<void> {
        return this.manager.signinSilentCallback()
                           .catch(e => {
                               console.log(e);
                           });
    }

Моя конфигурация событий службы аутентификации выглядит следующим образом:

@Injectable()
export class AuthService {
    private manager: UserManager;
    private user: User = null;

    constructor() {
        if (!environment.production) {
            Log.logger = console;
        }
        this.manager = new UserManager(getClientSettings());

        this.manager.getUser()
                    .then(user => {
                        this.user = user;
                    });

        this.manager.events.addUserSignedOut(() => {
            this.signOut();
        });

        this.manager.events.addAccessTokenExpired(() => {
            this.signOut();
        });
    }
}
export function getClientSettings(): UserManagerSettings {
    return {
        authority: environment.authorityUrl,
        client_id: 'my_client_id',
        redirect_uri: `${environment.baseUrl}/auth-callback`,
        post_logout_redirect_uri: environment.baseUrl,
        response_type: 'id_token token',
        scope: 'openid profile my_api',
        filterProtocolClaims: true,
        loadUserInfo: true,
        automaticSilentRenew: true,
        silent_redirect_uri: `${environment.baseUrl}/silent-renew-callback`,
    };
}

Дело в том, что при чтении некоторых постов должно быть событие, подключенное при обновлениипользователь:

this.manager.events.addUserLoaded(_ => {
            this.manager.getUser()
                        .then(user => {
                            this.user = user;
                        });
        });

Мой вопрос заключается в том, является ли это обязательным для добавления при использовании тихого обновления или нет, а также, если это не нужно, если это звучит как колокольчик о любых проблемах, с которыми вы столкнулисьчерез это раньше.

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...