我有兩個應用程序基于 ASP.NET MVC 的客戶端應用程序構建基于 Web API + OWIN 的身份驗證服務器已計劃身份驗證如下對于用戶登錄,客戶端應用程序將使用登錄憑據向身份驗證服務器發出請求。身份驗證服務器將生成一個令牌并將其發送回客戶端應用程序。客戶端應用程序將該令牌存儲在本地存儲中。對于每個后續請求,客戶端應用程序將附加令牌保存在請求標頭中的本地存儲中。現在,在 CLEINT 應用程序的服務器端,我需要驗證每個請求附帶的令牌沒有被調和。請建議我如何在每個請求中驗證令牌,因為我不知道 OWIN 用于生成令牌的密鑰。在客戶端應用程序上編寫代碼來驗證令牌是正確的,還是應該在身份驗證服務器上。我計劃將所有用戶管理代碼(例如注冊用戶、更改密碼)轉移到身份驗證服務器,以便我們可以將其重新用于不同的客戶端應用程序 - 這是正確的設計實踐嗎?到目前為止,我已經編寫了下面的代碼來創建一個 POC。
3 回答

一只名叫tom的貓
TA貢獻1906條經驗 獲得超3個贊
請建議我如何在每個請求中驗證令牌,因為我不知道 OWIN 用于生成令牌的密鑰。
您當前的設置(如果您已將其添加app.UseOAuthBearerAuthentication()到 owin 管道)將從為您傳遞的每個請求中傳遞的不記名令牌對用戶進行身份驗證。然后可以通過 找到當前用戶HttpContext.Current.User。
Authorize然后使用該屬性決定在某些端點上授權哪些用戶。這是一個允許具有“user”角色的用戶訪問的示例
[Authorize(Roles="user")]
public class ValuesController : ApiController
{
}
在客戶端應用程序上編寫代碼來驗證令牌是正確的,還是應該在身份驗證服務器上。
不,您不會在客戶端驗證令牌,如果您的用戶憑據錯誤,您根本不會獲得令牌。這就是你需要知道的全部。 而且,為什么要在客戶端驗證令牌?
我計劃將所有用戶管理代碼(例如注冊用戶、更改密碼)轉移到身份驗證服務器,以便我們可以將其重新用于不同的客戶端應用程序 - 這是正確的設計實踐嗎?
重用令牌提供程序很常見。為什么要為每個應用程序發明輪子?構建一個偉大的,或使用第三方,并在您的應用程序中重用它。
- 3 回答
- 0 關注
- 172 瀏覽
添加回答
舉報
0/150
提交
取消