我正在創建一個分佈式應用程序,該應用程序將使用ASP.NET Web API來支持單頁面Web應用程序(SPA)和其他潛在的本地移動應用程序平臺。我目前的體系結構使用Thinktecture Identity Server作爲STS,它將爲我的客戶端提供授權令牌以用於訪問WebAPI。在後端,我將擁有持久性和業務邏輯,這些將由我的WebAPI的獨立應用程序域中的WCF服務公開。 WebAPI將調用服務層來訪問數據並對域執行操作。分佈式應用程序中的ASP.NET WebAPI客戶端授權
我的問題是關於授權。我將使用基於聲明的授權,並且可以從我的WCF公開的業務層中增加有關用戶的域數據的聲明列表。但我應該在哪裏進行授權?在.NET 4.5中,ASP.NET現在有一個可擴展的模型,使我能夠將授權邏輯從我的控制器中分離出來,並使用ClaimsAuthorizationManager作爲單獨的授權模塊。此外,Thinktecture.IdentityModel在我的WebAPI應用程序中提供所有的管道工具來做到這一點非常出色。但是,我不禁認爲授權邏輯應該位於我的業務層中,位於WCF服務之後,並且面向客戶端的WebAPI不應負責執行此任務。如果我需要其他面向客戶端的託管應用程序來使用我的基於WCF的業務層,那麼他們還需要實現安全代碼。不利的一面是,這意味着未經授權的請求會在被拒絕之前進入應用程序。
問題:我應該在ASP.NET中使用基於聲明的授權功能,還是應該在WCF服務背後的業務層中包裝授權?
如果您只能通過您的asp.net網站訪問您的服務,那麼獲得您的asp.net句柄授權將更容易,以避免服務請求。如果您將通過其他消費者訪問您的服務,我相信隨着您的服務處理授權,它會更加穩固。 – Esteban