SilentRenewService._tokenExpiring: ошибка от signinSilent: время ожидания окна кадра истекло t.error

Я следую курсу множественного числа Защита приложений Angular с помощью OpenID Connect и OAuth2 для запуска и работы с oidc-client в Angular, но я столкнулся с проблемой с токеном тихого обновления, который выдает

SilentRenewService._tokenExpiring: ошибка от signinSilent: время ожидания окна кадра истекло t.error

на сервере стоит клиент

new Client
            {
                ClientId = "spa-client",
                ClientName = "Projects SPA",
                AllowedGrantTypes = GrantTypes.Implicit,
                AllowAccessTokensViaBrowser = true,
                RequireConsent = false,

                RedirectUris =           { 
                              "http://localhost:4200/assets/oidc-login-redirect.html",
                              "http://localhost:4200/assets/silent-redirect.html" 
                               },
                PostLogoutRedirectUris = { "http://localhost:4200/?postLogout=true" },
                AllowedCorsOrigins =     { "http://localhost:4200/" },

                AllowedScopes =
                {
                    IdentityServerConstants.StandardScopes.OpenId,
                    IdentityServerConstants.StandardScopes.Profile,
                    "projects-api"
                },
                IdentityTokenLifetime=30,
                AccessTokenLifetime=30

            }

и конфиг на клиенте такой:

var config = {
  authority: 'http://localhost:4242/',
  client_id: 'spa-client',
  redirect_uri: 'http://localhost:4200/assets/oidc-login-redirect.html',
  scope: 'openid projects-api profile',
  response_type: 'id_token token',
  post_logout_redirect_uri: 'http://localhost:4200/?postLogout=true'
  userStore: new WebStorageStateStore({ store: window.localStorage }),
  automaticSilentRenew: true,
  silent_redirect_uri: 'http://localhost:4200/assets/silent-redirect.html'
};

Я нашел предложенное решение от "Sohan" для аналогичной проблемы здесь (это специально для Azure AD). Это затем вызывает

Время ожидания окна кадра истекло

Или предложение в этот пост добавить ссылки для молчаливого redirect.html в мой файл angular.json, это не помогло

Я использую Angular 7 и Chrome Version 73.0.3683.86 (Official Build) (64-bit)


person tony09uk    schedule 28.03.2019    source источник
comment
Трудно сказать что-либо о каком-то курсе с ограниченным доступом. Но в любом случае вы проверили журналы на стороне IdSrv? Может там есть информация. Когда вы получаете ошибку (шаги для воспроизведения)?   -  person d_f    schedule 29.03.2019
comment
Да ошибок нет. Похоже на это, но даже был поражен   -  person tony09uk    schedule 29.03.2019


Ответы (2)


Это заняло у меня несколько попыток исправить. Это была комбинация:

  • мой объект oidc-client.js UserManager инициализировался более одного раза;
  • У меня не было пути /silent-refresh для всех моих сред, зарегистрированных в моей таблице IdentityServer4 ClientRedirectUris.
person codeMonkey    schedule 21.04.2020

Обычно я получаю эту ошибку, когда забываю настроить URL-адрес «тихого обновления».

person matteogll    schedule 27.03.2020
comment
Привет, matteogll, спасибо за ответ! Не могли бы вы немного рассказать о настройке URL-адреса автоматического обновления? - person Brydenr; 27.03.2020
comment
Да, у меня возникает такая ошибка, когда мой URL-адрес SilentRefres по каким-то причинам не работает. В вашем случае: во-первых: проверьте, что localhost:4200/assets/silent-redirect.html доступен из IdentityServer (иначе вы увидите ошибку в server.log). Во-вторых: убедитесь, что в silent-redirect.html вызов UserManager.signinSilentCallback() не выдает ошибки. - person matteogll; 30.03.2020