我有一個充當WCF客戶端的ASP.NET MVC/WebApi應用程序。如果當前用戶和數據的組合不匹配(例如,用戶嘗試訪問其他用戶的數據),我的WCF服務正在通過ClaimsPrincipalPermission
進行授權,另外還會拋出SecurityException
。通過多次WCF服務傳遞SecurityException
我趕上這在我的過濾器SecurityAccessDeniedException
和返回狀態碼403
但是,這僅適用於涉及單跳通信。如果服務本身與另一項服務進行通信,則SecurityAccessDeniedException
在到達Web應用程序之前變爲FaultException
。
示例流程:
Web client --> Service A [SecurityException] --> [SecurityAccessDeniedException] Web
Web client --> Service A --> Service B [SecurityException]
--> [SecurityAccessDeniedException] Service A [FaultException] --> [FaultException] Web
我試圖實現一個IErrorHandler
處理該SecurityAccessDeniedException
但我不能只是拋出一個SecurityException
那裏。
我有什麼選擇將SecurityException
傳播到Web客戶端?
或者:我如何在我的錯誤處理程序中構造一條消息,然後客戶端正確地將其解釋爲SecurityAccessDeniedException
?