SilentRenewService._tokenExpiring: Kesalahan dari signinSilent: Batas waktu jendela bingkai habis t.error

Saya mengikuti kursus pluralsight Mengamankan Aplikasi Angular dengan OpenID Connect dan OAuth2 untuk memulai dan menjalankan dengan oidc-client di Angular, tetapi saya menemukan masalah dengan token penyegaran senyap, yang menyebabkan

SilentRenewService._tokenExpiring: Kesalahan dari signinSilent: Batas waktu jendela bingkai habis t.error

di server klien berada

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

            }

dan konfigurasi pada klien adalah:

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'
};

Saya menemukan solusi yang disarankan dari "Sohan" untuk masalah serupa di sini (ini khusus untuk Azure AD). Hal ini kemudian menyebabkan

Batas waktu jendela bingkai habis

Atau saran di postingan ini agar saya menambahkan referensi untuk silent- redirect.html ke file Angular.json saya, ini tidak membantu

Saya menggunakan Angular 7 dan Chrome Version 73.0.3683.86 (Official Build) (64-bit)


person tony09uk    schedule 28.03.2019    source sumber
comment
Sulit untuk mengatakan apa pun mengenai kursus dengan akses terbatas. Tapi apakah Anda sudah memeriksa log di sisi IdSrv? Mungkin ada beberapa info di sana. Kapan Anda mendapatkan kesalahan (langkah-langkah untuk mereproduksi)?   -  person d_f    schedule 29.03.2019
comment
Ya, tidak ada kesalahan. Kelihatannya sih tapi malah kena   -  person tony09uk    schedule 29.03.2019


Jawaban (2)


Yang ini memerlukan beberapa kali percobaan untuk memperbaikinya. Itu adalah kombinasi dari:

  • objek oidc-client.js UserManager saya diinisialisasi lebih dari sekali;
  • Saya tidak memiliki jalur /silent-refresh untuk semua lingkungan saya yang terdaftar di tabel IdentityServer4 ClientRedirectUris saya.
person codeMonkey    schedule 21.04.2020

Saya biasanya mendapatkan kesalahan ini ketika saya lupa mengkonfigurasi URL "silent refresh".

person matteogll    schedule 27.03.2020
comment
Hai matteogll, terima kasih atas jawaban Anda! Bisakah Anda menjelaskan sedikit tentang konfigurasi URL penyegaran senyap? - person Brydenr; 27.03.2020
comment
Ya, saya mengalami kesalahan seperti ini ketika URL silentRefres saya tidak berfungsi karena beberapa alasan. Dalam kasus Anda: Pertama: periksa apakah localhost:4200/assets/silent-redirect.html dapat dijangkau dari IdentityServer (jika tidak, Anda akan melihat beberapa kesalahan di server.log). Kedua: periksa apakah di silent-redirect.html panggilan UserManager.signinSilentCallback() tidak memberikan kesalahan. - person matteogll; 30.03.2020