簡體   English   中英

如何為asp.net mvc和Web API實施相同的身份驗證機制

[英]How to implement the same authentication mechanism for both the asp.net mvc and web API

目標是創建一個可以由本機移動設備(iOS,Android,Win Phone)以及具有各種表示層(asp.net核心MVC,Angular)的Web應用程序共享的api。

規划使用asp.net核心Web API來實現將由移動客戶端以及javascript客戶端使用的REST API。 我的問題是,將在理想情況下將安全邏輯放在哪里使用其他表示層(如asp.net MVC)? 如果我們在REST api中添加檢查,那么asp.net MVC應用程序控制器將不得不使用HttpClient調用REST Web api,而不僅僅是引用業務層(共享類庫)。

每個應用程序的身份驗證將由json網絡令牌處理,因為它們易於移動並且可以輕松擴展。 所以我的問題確實是關於授權安全性和它的安全性。

選項1:

Web API(安全性生活在這里)>業務/服務層>數據訪問層>數據層

選項2:Web API>業務/服務層(安全存在於此處)>數據訪問層>數據層

在選項1中,這對於移動端和客戶端前端來說非常合適,因為它們必須調用REST API,但是asp.net核心MVC必須使用HttpClient來調用REST api,而不是調用組成該類的共享類庫。業務/服務層。

在選項2中,所有REST api所負責的就是調用在其中處理安全性的業務/服務層。

聽起來您的目標是構建公共API。 這應該是獨立的,並且可以單獨處理安全性-MVC網站只是另一個客戶端(可能恰好生活在同一解決方案中),但理想情況下,它們之間不應有太多引用(基本上只是API合同)。 這樣,您還可以更早地捕獲到向后的向下兼容性問題,而不是MVC站點始終以強類型(即使通過重構)工作,而其他(尤其是移動客戶端)則不會-您將擁有求助於API版本。

如果您在服務器端采取某些措施(例如,緩存),那么性能確實不應該成為問題,因為大量API都以這種方式工作。

暫無
暫無

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

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