在對 OpenID Connect 機制(包括 .NET Core 中的身份驗證 DLL 會話和 cookie)進行了大量研究之后,在這里提出這個問題。希望像您這樣的專家能夠幫助我解決我長期懸而未決的問題。
當我使用多個 pod 運行我的應用程式時,我無法登錄應用程式并出現以下例外。使用單個 pod 可以正常作業。
例外:oauth 狀態丟失或無效。(地點不明)
例外:處理遠程登錄時遇到錯誤。
我在 Visual Studio 2017 中使用 ASP.NET Core 2.1 并使用 OpenId Connect 機制實作了 SSO。使用 Ping 作為身份提供者。
該應用程式部署在 ICP (IBM Cloud) 環境中,并使用 Kubernetes 創建 pod。
得到例外后,如果我保持瀏覽器打開而不單擊,例外變為:
例外:OAuth 令牌端點失敗:狀態:BadRequestHeader
我嘗試了一些方法,例如為應用程式啟用 SQL Server 會話狀態(考慮到它是分布式會話場景,并且 cud 是會話值在其他 pod 上不可用)、啟動檔案中的 Samesite 配置、實作 ITicket 會話存盤和其他一些但沒有運氣。
uj5u.com熱心網友回復:
您是否在每個 pod 中配置了資料保護 API?
由 ASP.NET 核心發布的會話 cookie 使用資料保護 API 進行加密
要使來自一個 Pod 的 cookie 可供另一個 Pod 使用,則需要使用相同的密鑰配置兩個 Pod。
用于簽署 cookie 的密鑰存盤在密鑰環中。如果您重新部署應用程式并且沒有正確配置它,那么將為每個服務頒發一個新的加密密鑰。
如果無法找到用于加密 cookie 的密鑰,則這意味著所有客戶端瀏覽器中的現有會話 cookie 無法再被解密。
請參閱這篇關于這個 API 的文章和這篇關于如何配置它的文章。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/404861.html
標籤:
