在ID4上提問非常困難。此外,我可以在谷歌上搜索所有相關討論,指向不存在的代碼示例鏈接。
我所擁有的:一個 Angular 客戶端使用由 Microsoft 提供的 MVC 頁面組成的 ID4 身份驗證,托管在 ASP.NET Core 中。
啟動檔案
services.AddDefaultIdentity<ApplicationUser>(options => options.SignIn.RequireConfirmedAccount = true)
.AddEntityFrameworkStores<AppDbContext>();
services.AddIdentityServer()
.AddApiAuthorization<ApplicationUser, AppDbContext>();
services.AddAuthentication()
.AddIdentityServerJwt();
. . .
app.UseAuthentication();
app.UseIdentityServer();
app.UseAuthorization();
授權.service.ts
const settings: any = await response.json();
settings.automaticSilentRenew = true;
settings.includeIdTokenInSilentRenew = true;
this.userManager = new UserManager(settings);
用例:用戶登錄網頁,勾選記住我復選框并使用經過身份驗證的網站部分。如果服務器重新啟動 - 令牌丟失并且用戶與網站的互動中斷 - 例如,網路瀏覽器控制臺中沒有錯誤,如果用戶嘗試訪問任何服務器端資料,則不會發生任何事情。好像什么都沒有。好像身份驗證沒有問題。
它只能通過手動注銷/登錄來修復。或者通過打開新標簽并再次轉到應用程式。
是否有關于如何 a) 檢測客戶端令牌損壞和 b) 請求新令牌的簡單解釋?
編輯如果用戶在下一個作業日繼續使用網站或打開新的瀏覽器選項卡(無需重新啟動服務器),ID4 將按預期作業 - 無需登錄。
小提琴手:

uj5u.com熱心網友回復:
簡短的回答是:如果服務器行程(應用程式后端或identityserver4基于 IDP)重新啟動,則不會有任何中斷,因此您可能會丟失一些持久性(對于持久授權)和/或共享配置(例如令牌簽名密鑰和 ASP.Net資料保護密鑰),啟動時正在重新生成內容,并且記憶體中的資料正在丟失。
本文介紹了部署可行的生產服務時需要考慮的事項:https : //docs.identityserver.io/en/latest/topics/deployment.html
有了這一切,盡管令牌仍然會過期,并且有幾種方法可以根據背景關系和使用的授權型別來重繪 它們。
要檢測令牌是否不再有效:
- 使用它并檢測是否從您正在呼叫的端點收到 401 回應
exp自己檢查令牌內的宣告- 使用
expires_in令牌回傳的值并根據該值計算到期時間
要更新它(并且一些庫會自動執行此操作):
- 使用基于 iframe 的靜默更新機制(使用 prompt=none 授權端點) - 請注意,第三方 cookie 限制對此起作用
- 通過令牌端點使用重繪 令牌(不推薦用于客戶端應用程式,因為需要在客戶端保留重繪 令牌)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/353967.html
上一篇:使用默認橋接網路的VsCode開發容器之間的SignalR
下一篇:根據條件更改主頁
