2

我正在寻找一个钩子、事件或其他一些可用于在OperationContext.Current.ClaimsPrincipal设置之后但在调用实际方法之前运行一些自定义代码的扩展点。我尝试过使用以下内容:

  • IDispatchMessageInspector(AfterReceiveRequest方法)
  • IParameterInspector(BeforeCall方法)
  • IAuthorizationPolicy(Evaluate方法)
  • ICallContextInitializer(BeforeInvoke方法)

这些点都没OperationContext.Current.ClaimsPrincipal有价值。

如何在设置传入声明之后但在方法本身运行之前运行一些代码(在我的情况下,它是授权和审计代码,基于传入的声明)?

4

1 回答 1

1

对于 RP(您的应用程序)的授权代码,实现 ClaimsAuthorizationManager 来进行授权检查。具体来说,重写 CheckAccess 方法并根据您的授权检查返回 true/false。ClaimsPrincipal 可以从传递给您的 CheckAccess 方法的上下文中访问。

更多背景和示例在这里:

http://msdn.microsoft.com/en-us/library/system.security.claims.claimsauthorizationmanager.aspx

于 2013-03-19T21:39:31.487 回答