簡體   English   中英

分布式應用程序中的ASP.NET WebAPI客戶端授權

[英]ASP.NET WebAPI client authorization in a distributed application

我正在創建一個分布式應用程序,它將使用ASP.NET Web API來支持單頁Web應用程序(SPA)和其他潛在的本機移動應用程序平台。 我當前的體系結構使用Thinktecture Identity Server作為STS,它將為我的客戶端提供用於訪問WebAPI的授權令牌。 在后端,我將擁有持久性和業務邏輯,這些邏輯將由WCF服務與WebAPI分開的應用程序域公開。 WebAPI將調用服務層以訪問數據並在域上執行操作。

我的問題是關於授權 我將使用基於聲明的授權,並可以從WCF暴露的業務層中有關用戶的域數據中擴展聲明列表。 但是我應該在哪里進行授權? 在.NET 4.5中,ASP.NET現在具有一個可擴展的模型,使我可以使用ClaimsAuthorizationManager將授權邏輯從控制器中分離到單獨的授權模塊中。 另外, Thinktecture.IdentityModel在提供所有管道以在我的WebAPI應用程序中執行此任務方面做得非常好。 但是,我不禁想到授權邏輯應該位於我的業務層中,在WCF服務之后,並且不應該對面向客戶端的WebAPI強制執行此任務。 如果我要求其他面向客戶端的托管應用程序使用我基於WCF的業務層,那么他們還需要實現安全代碼。 不利的一面是,這確實意味着未經授權的請求會在拒絕之前進入應用程序。

問題 :應該在ASP.NET中使用基於聲明的授權功能,還是應該在WCF服務后面的業務層中包裝授權?

如果可能,您應該始終嘗試使用所使用的框架提供的授權工具。 就微軟而言,它是基於聲明的授權。 這樣做的好處是,您可以將授權邏輯隔離在其自身的一層中,而不是在業務邏輯中。

基於聲明的授權是許多授權方法之一。 另一種可能是使用XACML。 我最近為開發人員(盡管是Java開發人員)做了有關XACML的演講。 您可以在此處了解更多信息。 我還寫了一篇有關.NET和XACML的文章,您可以在此處查看

暫無
暫無

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

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