Angular -oauth-oid c, AuthConfig имеет значение null при вызове OAuthService.silentRefre sh () - PullRequest
1 голос
/ 15 января 2020

У меня есть приложение Angular, которое проходит аутентификацию в Windows ADFS 2016 с использованием Open Id Connect. Приложение извлекает токен доступа и идентификатор токена через неявный поток и работает нормально. Проблема возникает, когда я пытаюсь обновить sh токен с помощью silentRefre sh (), как описано в документации: https://manfredsteyer.github.io/angular-oauth2-oidc/docs/additional-documentation/refreshing-a-token.html

Это конфигурация:

const authConfig: AuthConfig = {
issuer: <address to adfs>,
redirectUri: window.location.origin+'/index.html',
silentRefreshRedirectUri: window.location.origin + '/silent-refresh.html',
clientId: '<client-id>',
scope: 'openid email profile',
logoutUrl: window.location.origin+'/logout',
tokenEndpoint: '<adfs address>/adfs/oauth2/token',
loginUrl: '<adfs address>/adfs/oauth2/authorize',
strictDiscoveryDocumentValidation: false,
skipIssuerCheck: true,
oidc: true
};

Конфигурация OAuth

  private configureOauth(){
  this.oauthService.configure(authConfig);
  this.oauthService.tokenValidationHandler = new JwksValidationHandler();
  this.oauthService.setStorage(sessionStorage);
  this.oauthService.setupAutomaticSilentRefresh({});
  this.oauthService.tryLogin({onTokenReceived: context => {
    // tslint:disable-next-line:no-console
    console.debug('logged in');
    // tslint:disable-next-line:no-console
    console.info( this.oauthService.getAccessToken() );
    // tslint:disable-next-line:no-console
    console.info( this.oauthService.getIdToken() );
  }});
}

Чтобы обновить sh токен, который я вызываю

public triggerSilentRefresh(){
   this
      .oauthService
      .silentRefresh()
      .then(info => console.debug('refresh ok', info))
      .catch(err => console.error('refresh error', err));
}

Но я получаю следующую ошибку:

core.js:6014 ERROR Error: Uncaught (in promise): TypeError: Cannot read property 'responseType' of null
 TypeError: Cannot read property 'responseType' of null
  at OAuthService.<anonymous> (angular-oauth2-oidc.js:1826)
  at Generator.next (<anonymous>)

This createLoginUrl выбрасывается, потому что AuthConfig имеет значение null.

    createLoginUrl(state = '', loginHint = '', customRedirectUri = '', noPrompt = false, params = {}) {
    return __awaiter(this, void 0, void 0, function* () {
        /** @type {?} */
        const that = this;
        /** @type {?} */
        let redirectUri;
        if (customRedirectUri) {
            redirectUri = customRedirectUri;
        }
        else {
            redirectUri = this.redirectUri;
        }
        /** @type {?} */
        const nonce = yield this.createAndSaveNonce();
        if (state) {
            state = nonce + this.config.nonceStateSeparator + state;
        }
        else {
            state = nonce;
        }
        if (!this.requestAccessToken && !this.oidc) {
            throw new Error('Either requestAccessToken or oidc or both must be true');
        }
        if (this.config.responseType) { //HERE config is null
            this.responseType = this.config.responseType;

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

...