WCF检测调用了哪个绑定

时间:2011-07-29 20:19:47

标签: wcf authentication

我有一个WCF Web服务,可以通过多个端点调用它。如何动态检测使用了哪个端点?

例如,可以通过HTTPS使用名为“WSHttpBinding_TransportSecurity_IMyService”的绑定或通过名为“WSHttpBinding_WindowsSecurity_IMyService”的Windows集成身份验证绑定来调用我的服务。根据调用的那个,我需要采取稍微不同的操作来确定客户端的身份。

我该如何处理? (如果需要更具体的细节,我可以提供。)

3 个答案:

答案 0 :(得分:2)

如果您需要知道源绑定以确定呼叫者身份,那么您做错了什么。您的服务应该与协议无关。身份管理可以使用身份验证策略来完成。

答案 1 :(得分:0)

您无法尝试获取当前用户的Windows身份

WindowsIdentity callerWindowsIdentity = ServiceSecurityContext.Current.WindowsIdentity;

如果它为NULL则尝试使用用户名/密码版本?

答案 2 :(得分:0)

回答原来的问题:

您可以使用IncomingMessageHeaders的To属性,它为您提供客户端使用的URI。

OperationContext contect = OperationContext.Current;
MessageHeaders messageHeaders = contect.IncomingMessageHeaders;
Uri To = messageHeaders.To;