簡體   English   中英

在 ASP.NET 應用程序中將身份驗證令牌存儲到另一個系統的位置

[英]Where to store auth token to another system in ASP.NET application

我有一個向客戶端提供文檔的 ASP.NET Web 應用程序。 該文檔可以在一個“單獨的”系統中。 要從該系統獲取文檔,我需要登錄,然后它返回一個令牌,然后我在向它發出的每個請求中使用該令牌。 (該系統的憑據不依賴於我的應用程序的當前用戶,我只有固定的用戶名和密碼)

我想避免每次請求文檔時都登錄,而是更願意在內部存儲令牌(它在一個小時后過期)。

存儲這種變量的推薦方法是什么?

不鼓勵使用靜態變量,使用Session只會為用戶存儲票證。

我認為您擁有的是應用程序身份驗證,而不是用戶應用程序身份驗證。 在這種情況下,如何將令牌保存在 1 小時到期的緩存中? 因此,每當系統嘗試讀取令牌時,請先嘗試從緩存中獲取值。 如果它是空的——這意味着它是第一次登錄或過期的緩存——命中認證服務,獲取令牌並將其保存到緩存中。

可能在負載平衡的環境中,您最終可能會發現每台服務器都有不同的令牌,我認為這對您來說很好。 否則,您可能需要考慮諸如 Redis 緩存之類的東西。

正如 Josh 在上面的評論中建議的那樣,將令牌存儲在數據庫中將是更好的選擇。

如何刷新該令牌是您需要做出的選擇。

您可以在舊令牌到期 5 分鍾前通過運行服務或作業請求新令牌。 您的 Web 應用程序將僅使用新令牌來檢索文檔。

此外,您的 Web 應用程序可以刷新令牌。 每當它使用數據庫中的令牌時,它可以檢查是否過期,如果令牌在接下來的 5 分鍾內過期,應用程序可以更新/刷新令牌並將具有新過期時間的新令牌存儲在數據庫中,並使用它來檢索文檔。

如果存儲在數據庫中太復雜,那么您可以考慮將令牌和到期時間存儲在 Web 服務器本身的臨時文件中,並使用上述兩種方法中的任何一種來刷新令牌。 不同之處在於,令牌存儲在文件中而不是數據庫中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM