簡體   English   中英

Web和類庫項目之間的共享身份驗證

[英]Shared Authentication between Web and class library projects

我有一個分為3個項目的解決方案。
其中兩個是使用ASP.Net Identity提供程序的MVC 5 Web應用程序。
一個是其他項目引用的類庫。 所有CRUD動作都在這里進行。

所有項目都指向同一數據庫,並通過EF進行操作。

所有業務邏輯都發生在類庫中,但與用戶無關。 用戶驗證僅在Web應用程序中發生。 這里的問題是在所有Web項目中都重復了用戶驗證代碼,並且類庫不知道用戶調用了API。
這種架構將很快帶來維護方面的噩夢,因此我只希望類庫與db進行業務邏輯或用戶驗證。
現在,由於ASP.Net Identity提供程序在類庫中不起作用,因此有人找到解決方法嗎?

我不確定在Web應用程序中具有安全性是指什么“維護噩夢”。 將您的應用程序域與安全模型脫鈎是一件好事。 在某些Web應用程序中,您的域模型和業務邏輯可能保持不變,但是安全模型可能有所不同。 我不會將這些捆綁在一起。 並且如果它在您的類庫中,您將如何讓OWIN安全框架為您處理表單身份驗證。 您是否還要在類庫中管理所有這些。

當您提到“用戶驗證”時,我假設您是在談論授權。 如果必須在類庫中執行授權,則可以實現自定義ClaimsAuthorizationManager 您將覆蓋CheckAccess方法以執行授權。 ClaimsAuthorizationManager是在web.config中配置的,因此對於不同的Web應用程序,您可以具有不同的ClaimsAuthorizationManager。 但是,類庫中的邏輯將保持不變。 在執行操作之前要授權用戶的任何位置,您都可以插入:

ClaimsPrincipalPermission.CheckAccess("MyResource", "MyAction");

傳遞的資源和操作將在您創建的自定義ClaimsAuthorizationManager中使用,以了解進行授權的上下文。 在本文中,我將討論這種用於將安全模型與應用程序域分離的方法。 如果授權失敗,則拋出SecurityException。 您可以將其滲透到適當處理它的Web應用程序中(在控制器中重定向或Web APi的HTTP未授權錯誤)。 請注意,如果您還在非Web應用程序中使用類庫,則該體系結構也將起作用。 我已經將此與ASP.NET Identity結合使用,並且效果很好。

暫無
暫無

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

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