在IDispatchMessageInspector中访问用户名

时间:2013-03-25 11:59:10

标签: wcf logging wif

我使用IDispatchMessageInspector为WCF服务实现了自定义日志记录逻辑。

我正在使用AfterReceiveRequest和BeforeSendReply在数据库中记录整个SOAP请求/响应。

我正在使用基于声明的身份验证,无需任何问题。

但是,当我尝试访问Thread.CurrentPrincipal.Identity.Name或ClaimsPrincipal.Current.Identity.Name时,我总是得到空字符串(未设置标识,因此名称为空)。

有没有办法从IDispatchMessageInspector以任何方式访问身份?

谢谢!

1 个答案:

答案 0 :(得分:2)

如果基于声明的身份验证有效,则可以将用户添加到声明集中。 您可以以静态方式访问ClaimSet:

ReadOnlyCollection<ClaimSet> claimSets = ServiceSecurityContext.Current.AuthorizationContext;`

另一种可能性是向您的服务添加ServiceAuthorizationManager,在您的配置中注册它并从此类访问您的ClaimSet。

希望这有帮助