Тихое обновление в oid c -client. js при наличии дополнительных параметров запроса - PullRequest
0 голосов
/ 11 июля 2020

Я получаю ошибку ниже enter image description here

I am having below UserManagerSettings

private getClientSettings(loginType?): UserManagerSettings {
    let logout;
    if (window.sessionStorage.getItem('loginType') === 'Internal') {
      logout = environment.post_logout_redirect_uri + 'biz-admin';
    } else {
      logout = environment.post_logout_redirect_uri;
    }

    return {
      authority: environment.authority,
      client_id: environment.client,
      redirect_uri: environment.redirectUri,
      post_logout_redirect_uri: logout,
      response_type: 'id_token token',
      scope: environment.scopes,
      filterProtocolClaims: true,
      silent_redirect_uri: 'http://localhost:4200/assets/silent-refresh.html',
      loadUserInfo: true,
      extraQueryParams: {
        loginType: loginType,
      },
    };
  }

Below adds an expiring event

this.manager.events.addAccessTokenExpiring(x => {
  this.renewToken().then(u => {
    this.user = u;
  });
});

Below functions call sign in silent

 public renewToken(): Promise {
    return this.manager.signinSilent(this.getClientSettings('Internal'));
  }

Silent-refresh.html

 var mgr = new Oid c .UserManager (); mgr.signinSilentCallback (). catch (error => {console.error (error);});  

URI, у меня есть собственный лог c на основе loginType

redirect_uri=http%3A%2F%2Flocalhost%3A4200%2Fassets%2Fsilent-refresh.html&response_type=id_token&scope=openid&state=307b01d8e3234027b92e0f2920364d4a&nonce=c8d110e677bd4fc8a993b77798893edf&prompt=none&loginType=undefined

Кроме того, у меня есть правильный URI перенаправления в базе данных, но обновление не работает . renewtoken() вызывается, но никогда не возвращается к коду 'then'.

Вопросы -

  1. Как при автоматическом обновлении удается получить access_token? требуется ли откуда-то сохраненный пароль идентификатора?
  2. Как я могу отправить дополнительные параметры запроса на signInSilent() он не определен даже после того, как я передал его как параметры, как signInSilent() получает настройки диспетчера пользователей?

1 Ответ

0 голосов
/ 12 июля 2020

Мне удалось решить мою проблему, выполнив следующие действия:

Запуск

 services.AddIdentityServer(options =>
            {
                options.Authentication.CookieLifetime = TimeSpan.FromDays(30);
                options.Authentication.CookieSlidingExpiration = true;
            })

services.AddAuthentication(x => x.DefaultAuthenticateScheme = IdentityServer4.IdentityServerConstants.DefaultCookieAuthenticationScheme);

Выход

public async Task<IActionResult> Logout(LogoutInputModel model) { await HttpContext.SignOutAsync(IdentityServer4.IdentityServerConstants.DefaultCookieAuthenticationScheme);}

На стороне angular ничего нет, мы необходимо настроить указанные выше параметры на коде сервера идентификации

Благодаря приведенному ниже комментарию пользователя https://github.com/IdentityModel/oidc-client-js/issues/911#issuecomment -617724445

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