我有一個已經運行多年的應用程式,沒有更改代碼。該應用程式通過包括 Google Workspace 和 Office 365 在內的各種提供商的 OAuth2.0 登錄。自 Chrome V97 推出以來(即最近幾天),O365 登錄已停止作業,由于某種原因,auth cookie 沒有在 OAuth 回呼 GET 處理程式中設定。設定 cookie 的代碼與為 Google Workspace 運行的代碼相同,但它有效。它也適用于火狐。關于 Google Chrome V97 的某些內容會阻止設定 cookie,但前提是它首先往返于 O365。
為了隔離這個問題,我創建了一個手動設定 cookie 的假回呼,從而消除了所有的身份驗證復雜性。如果我通過在瀏覽器中訪問 URL 來呼叫它,那么 cookie 會按預期設定。但是,如果我先執行 O365 OAuth 舞蹈,然后呼叫此 URL,則不會設定 cookie。使用 Google Workspace 嘗試完全相同的操作,它就可以作業。
我已經除錯了好幾個小時并清除了想法。
任何人都可以闡明可能導致這種奇怪行為的原因嗎?
uj5u.com熱心網友回復:
我們也遇到了這個問題,通過添加SameSite=none;到 auth cookie 來解決。在 Chrome 97SameSite中設定為Lax如果缺少。在這里查看更多https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite
uj5u.com熱心網友回復:
可以確認添加SameSite=none也對我有用。
對于在 .Net Core Identity 應用程式中看到此問題的任何人,請確保您正在配置 ExternalCookie,而不是 ApplicationCookie。以下是相關代碼:
services.ConfigureExternalCookie(options =>
{
options.Cookie.SameSite = SameSiteMode.None;
});
uj5u.com熱心網友回復:
使用 SimpleSamlPHP 庫(以上 v1.19),我們需要將 samesite.cookie 設定為 'none' 和 secure.cookie 才能真正解決問題。最近 chrome / chromium 升級到 v97 時注意到了這個問題
'session.cookie.secure' => true,
'session.cookie.samesite' => \SimpleSAML\Utils\HTTP::canSetSameSiteNone() ? 'None' : null,
這將在 Chrome 瀏覽器中將相同的 cookie 站點標志設定為“無”,并在 cookie 上設定“安全”標志。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/410010.html
標籤:
下一篇:SQLite表選擇查詢優化
