我有一个充当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
?