查找WCF服务调用方的Active Directory域用户名

时间:2011-02-01 10:36:12

标签: c# wcf wcf-security

考虑使用WsHttpBinding的WCF服务,只允许域用户调用此服务。

如何找到呼叫者的Active Directory用户名?

3 个答案:

答案 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对象,并将用户详细信息作为消息结构的一部分发送。