我有一个WCF Web服务,可以通过多个端点调用它。如何动态检测使用了哪个端点?
例如,可以通过HTTPS使用名为“WSHttpBinding_TransportSecurity_IMyService”的绑定或通过名为“WSHttpBinding_WindowsSecurity_IMyService”的Windows集成身份验证绑定来调用我的服务。根据调用的那个,我需要采取稍微不同的操作来确定客户端的身份。
我该如何处理? (如果需要更具体的细节,我可以提供。)
答案 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;