токен angular-oauth2-oidc всегда недействителен после входа в систему

Я пытаюсь следовать руководству по документации https://github.com/manfredsteyer/angular-oauth2-oidc.

У меня в конструкторе сервиса есть следующая конфигурация:

authCodeFlowConfig: AuthConfig = {
   issuer: 'https://demo.identityserver.io',
   redirectUri: window.location.origin + '/home',
   clientId: 'spa',
   responseType: 'code',
   scope: 'openid profile email offline_access api',
   showDebugInformation: true
 };

this.oauthService.configure(this.authCodeFlowConfig);

(я также пробовал использовать URL-адрес перенаправления index.html, но это, похоже, не имело значения)

Вход в систему, похоже, работает нормально, я получаю перенаправление на страницу входа в систему и перенаправляюсь домой:

    this.oauthService.loadDiscoveryDocumentAndTryLogin().then((response) => {
      if (!this.oauthService.hasValidIdToken() || !this.oauthService.hasValidAccessToken()) {
         this.oauthService.initCodeFlow();
      }
    }).catch((err) => {
      console.log(err);
    });

Однако следующее по-прежнему возвращает false, false, null:

    const claims = this.oauthService.getIdentityClaims();
    console.log(this.oauthService.hasValidIdToken());
    console.log(this.oauthService.hasValidAccessToken());
    console.log(claims);

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


person Damian Fox    schedule 08.05.2020    source источник
comment
Не знаю, актуально ли это, но this.oauthService.logOut (); похоже, тоже не имеет никакого эффекта и держит меня в системе, поэтому я не перенаправляюсь на страницу входа снова, пока не истечет срок действия моего токена. Я чувствую, что это может быть проблема с хранением сеанса.   -  person Damian Fox    schedule 08.05.2020


Ответы (2)


Оказывается, я делал это неправильно.

Я не вызывал документ обнаружения загрузки в своем конструкторе, как должен был.

Если страница перезагружается, у меня нет документа обнаружения, чтобы проверить мой токен, и, следовательно, он недействителен.

person Damian Fox    schedule 17.05.2020
comment
Привет, не могли бы вы опубликовать свое решение? У меня те же проблемы, но я не могу найти решение - person user1814879; 25.03.2021

У меня была такая же проблема, я решил, как показано:

файл config.ts:

import { AuthConfig } from 'angular-oauth2-oidc';

export const authCodeFlowConfig: AuthConfig = {
    issuer: 'https://accounts.----/auth/realms/---',
    redirectUri: window.location.origin + '/login',
    clientId: 'my-project',
    responseType: 'code',
    scope: 'openid profile email offline_access',
    showDebugInformation: true,
};

файл login.ts:

ngOnInit(): void {
    this.oauthService.configure(authCodeFlowConfig);
    this.oauthService.tokenValidationHandler = new JwksValidationHandler();
    this.oauthService.setupAutomaticSilentRefresh();
    this.oauthService.loadDiscoveryDocumentAndTryLogin().then(() => {
      if (this.oauthService.hasValidAccessToken()) {
        // Load UserProfile to get the additional claims
        this.oauthService.loadUserProfile();
        this.router.navigateByUrl('/');
      } else {
        this.oauthService.initCodeFlow();
      }
    });
}
person victorpacheco3107    schedule 19.05.2021