我有一個身份驗證 API,它將重繪 令牌添加到僅限 HTTP 的 cookie。
Response.Cookies.Append("myRefresfToken", refreshToken, new Microsoft.AspNetCore.Http.CookieOptions
{
SameSite = Microsoft.AspNetCore.Http.SameSiteMode.None,
Expires = DateTime.UtcNow.AddDays(1),
HttpOnly = true,
Secure = false,
Domain = null,
Path = "/oauth/v2.0/Authorization/"
});
當我的站點從 Token 端點得到回應時,set-cookie 標頭就在那里。但是,當我使用開發工具查看站點時,我看不到正在設定的 cookie。此外,當請求回傳到 auth API 時,重繪 令牌 cookie 不存在。
如何從另一個 api 設定 cookie 以便我的客戶端存盤它?
謝謝你,
特拉維斯
uj5u.com熱心網友回復:
避免第三方 Cookie
如果您使用SameSite=nonecookie,您還需要設定Secure=true和使用基于 SSL 的設定。一般來說,盡管我建議不要構建任何使用第三方 cookie 的新解決方案,現代瀏覽器會積極洗掉這些cookie,而且這預計只會變得更加嚴格。
第一方 Cookie 的設計
對于 API 來發布可由基于瀏覽器的應用程式可靠使用的 cookie,現在有托管先決條件。針對這種型別的設定,所有云提供商都支持。然后 cookie 共享相同的父域,不會被洗掉,然后您也將能夠使用最安全的SameSite=strictcookie:
- 網路來源 = https://www.example.com
- API 域 = https://api.example.com
開發者測驗
在開發計算機上,您可以通過編輯主機檔案來模擬:
127.0.0.1 www.example.com api.example.com
:1 localhost
然后,您可以更新應用程式以使用諸如此類的 URL。請注意,不同的埠仍計為Same Site,并且在嚴格設定下您可以使用 HTTP URL 進行本地開發。看看這是否能解決您當前的問題,然后設計您的生產部署:
- http://www.example.com:3000
- http://api.example.com:3001
現代網路架構
出于興趣,上述概念是我們在 Curity 推薦的最佳單頁應用程式架構的一部分,其中 SPA 可以部署到內容交付網路并使用由 API 發布的安全 cookie。如果感興趣,請參閱有關此主題的Curity 資源。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/401734.html
