[英]Store the oauth access_token or ask a new one each 'session'
[英]How do I store an OWIN OAuth 2 access_token in an HttpOnly Secure cookie?
我的主要目標是正確保護一系列 Web API 控制器。 到目前為止,我已經使用 OWIN 來生成 access_tokens 並通過使用 [Authorize] 裝飾一個類來測試該功能,然后使用 jQuery ajax 調用在標頭中包含一個 Bearer 令牌來調用它。 這似乎是正確的路徑,但我讀過本地存儲並不安全。 相反,標記為 HttpOnly 和 Secure 的 cookie 似乎是受歡迎的解決方案。
我已經能夠找到人們正在使用本地存儲的提及,甚至可以瀏覽一下:
https://docs.microsoft.com/en-us/aspnet/web-api/overview/security/individual-accounts-in-web-api
我沒有找到的是如何配置 OWIN 以使用 cookie 來存儲令牌。
服務器端架構
OWIN 堆棧會將您綁定到基於 cookie 的安全性,並像這樣工作。 這可能非常適合您的要求:
此線程中演示了一種常見方法,其中令牌包含在身份驗證 cookie 中,Web 后端從令牌中解壓 cookie。
var id = new ClaimsIdentity(n.AuthenticationTicket.Identity.AuthenticationType);
id.AddClaim(new Claim("access_token", tokenResponse.AccessToken));
id.AddClaim(new Claim("refresh_token", tokenResponse.RefreshToken));
id.AddClaim(new Claim("id_token", n.ProtocolMessage.IdToken));
要求?
我總是建議從目標/要求開始,而不是從 Microsoft 等供應商的技術開始,后者通常有點陳舊或欠佳。
客戶端架構
如果您想在客戶端做更多,那么另一種方法是使用 SPA 架構並在 Javascript 中做更多:
如果在您未來的規划方面對這種方法感興趣,那么我的這兩個帖子是一個很好的起點:
無論如何,如果其中任何一個有用,請隨時發布后續問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.