2016-08-10 63 views
2

我與IdentityServer3使用oidc-client.js。與IdentityServer3 oidc客戶端 - Angular2 SPA,如何刷新數據訪問令牌

我已經在這一點上運行良好,除了更新訪問令牌。我有一個Angular2 SPA,我正在捕獲AccessTokenExpiring事件並允許用戶決定繼續工作或註銷。註銷非常簡單。但是,我正在努力用哪個userManager方法來刷新我的數據訪問令牌。看起來如果我使用signInSilent(),我需要提供一個無聲的重定向uri,我假定Idsvr將重定向到,我不想這麼做,因爲它會從用戶當前工作的地方重定向。有什麼我應該做的一個堅實的例子?

謝謝!

回答

2

在隱式流程中刷新令牌是通過前端通道(IOW瀏覽器)重定向用戶來完成的。對於JS風格的客戶端,沒有辦法通過編程來實現。

0

據我所知,UserManagersignInSilent機制允許用戶在隱藏的iframe中進行身份驗證。

沉默的重定向uri應該是您處理從IdentityServer返回的令牌的位置。

當然,如果用戶在令牌過期的時刻仍然登錄到IdentityServer,這隻能靜默地工作。

如果用戶已經註銷IdentityServer,則可以在代碼中放入一些邏輯(在無聲重定向URI中觸發)來檢測此情況(IdentityServer將以error login_required響應)。 您可以在此處觸發正常驗證或使用silentRenewError事件。

應用程序狀態可以通過傳遞給IdentityServer到UserManager.signinRedirect({data:'Your data here'})來保存。

您也可以使用UserManager.signinPopup({data:'Your data here'}來避免在主窗口中導航離開應用程序。其中popup_redirect_uri可以用於處理回調並觸發與新用戶一起更新主窗口中的任何用戶界面的事件。

oidc-client.js Wiki

Issue which covers signInSilent process

相關問題