我正在寻找一个钩子,事件或其他一些可扩展点,我可以在设置OperationContext.Current.ClaimsPrincipal
之后但在调用实际方法之前运行一些自定义代码。我尝试过使用以下内容:
IDispatchMessageInspector
(AfterReceiveRequest
方法)IParameterInspector
(BeforeCall
方法)IAuthorizationPolicy
(Evaluate
方法)ICallContextInitializer
(BeforeInvoke
方法) OperationContext.Current.ClaimsPrincipal
没有一个点具有值。
如果在设置传入声明之后,但在方法本身运行之前,如何运行一些代码(在我的情况下,它是基于传入声明的授权和审核代码)?
答案 0 :(得分:1)
对于RP(您的应用程序)的授权代码,请实施ClaimsAuthorizationManager以进行授权检查。具体来说,覆盖CheckAccess方法并根据您的授权检查返回true / false。 ClaimsPrincipal可以从传递给CheckAccess方法的上下文中访问。
更多背景和样本在这里:
http://msdn.microsoft.com/en-us/library/system.security.claims.claimsauthorizationmanager.aspx