考虑使用WsHttpBinding
的WCF服务,只允许域用户调用此服务。
如何找到呼叫者的Active Directory用户名?
答案 0 :(得分:14)
获取System.ServiceModel.ServiceSecurityContext.Current.WindowsIdentity.Name
属性的值。
只要安全模式与绑定的None
不同,使用哪种绑定无关紧要。
如果安全模式为None
,则System.ServiceModel.ServiceSecurityContext.Current
将为null
。
答案 1 :(得分:9)
您可以致电:
获取用户的身份ServiceSecurityContext.Current.WindowsIdentity.Name
或
OperationContext.Current.ServiceSecurityContext.WindowsIdentity.Name
答案 2 :(得分:-4)
您必须在用于联系服务的消息结构中添加某种用户信息。
e.g。
public class UserInformation
{
public string User { get; set; }
public string Password { get; set; }
}
[DataContract]
public class Request
{
[DataMember]
public UserInformation User { get; set; }
[DataMember]
public MyRequest RequestBody { get; set; }
}
通过这种方式,您可以在客户端查询活动目录,填充UserInformation对象,并将用户详细信息作为消息结构的一部分发送。