簡體   English   中英

MVC + WebApi。 授權與認證

[英]MVC + WebApi. Authorization and Authentication

我有一個ASP.NET MVC項目和一個Web Api項目(單獨的項目)。 通過Web Api完全實現對數據庫的訪問(包括授權和身份驗證)。 ASP.NET MVC是客戶端,Web Api是服務器。

因此,如何在ASP.NET MVC項目中(在客戶端)正確地實現授權和身份驗證? 我讀了很多文章(通過令牌)如何在Web Api中實現它,但是我不明白如何在ASP.NET MVC中正確使用此令牌。

實現每個請求的包裝? 我也不知道如何在ASP.NET MVC中定義用戶角色。 也許有某種方法可以重寫ASP.NET MVC授權的標准方法以與Web Api令牌一起使用? ASP.NET MVC客戶端上的Authorize屬性可以工作嗎? 如果可能的話,請在示例中提出建議,或者告訴我如何最好地實施。

如果將活動目錄配置為使用應用程序,則最好的方法是使用Azure活動目錄身份驗證。 您可以在此處獲取更多信息

我建議您使用OWIN接口為Web api和MVC實施基於令牌的身份驗證。 您應該在Web api中提供身份驗證令牌,並具有在MVC和Web Api中反序列化令牌的功能。 因此,您可以在此處找到一個示例開源項目該項目由我開發,涉及如何使用OWIN for Web api實現基於令牌的身份驗證。

對於MVC項目,應使用OWIN遵循相同的做法。

首先,如果您還沒有投入生產,可能是時候跳轉到.Net Core 2.x了。 它不會將Web API和MVC分開,並且是最新技術。

如果由於某種原因而無法升級框架,請使用Microsoft.Owin,Microsoft.Owin.Security.OpenIdConnect和所有依賴項。

OIdC定義了兩種類型的令牌: 身份令牌 (描述用戶)和授權令牌 (提供對API的訪問)。 系統中應該有一些身份提供者 ,用於認證用戶並授權客戶端(例如您的MVC APP)。 此類提供程序可以是外部的(Google,Office 365等),也可以是內部的-您可以使用免費的Identity Server 4.x實施並根據需要進行調整。 您甚至可以將IdP內置到您的應用程序中。

.Net Core和Owin OIdC實施的流程應相同:

  • 您注冊了所有應用程序(Identity provider中的API和MVC)
  • 用戶請求MVC資源,OIdC中間件將其重定向到IdP。
  • IdP對發出身份和訪問令牌的用戶進行身份驗證。
  • MVC會驗證身份令牌並使用它來創建本地身份驗證cookie,以便使用戶在應用程序中得到身份驗證。
  • MVC控制器調用一些API,並將其放入IdP請求的請求訪問令牌中。
  • API會驗證令牌並使用請求的數據進行響應。

暫無
暫無

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

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