作为前言,我有一个客户端和一个服务器程序,客户端通过SSL连接到服务器。
我正在寻找一种方法,通过SSL隧道验证通过Active Directory传递给服务器的PrincipalContext
或UserPrinicpal
。这是为了验证客户端的身份。有谁知道我会怎么做呢?
或者,有没有人知道这样做的另一种/更简单的方式?
答案 0 :(得分:1)
注意:如果您想使用LDAP对用户进行身份验证,那么此处已经回答了"Validate a username and password against Active Directory?"
的方法。
根据您的问题我可以理解,您只想搜索用户是否存在于AD中。
根据我的假设,我在C# PrincipalContext only changes password for some users, not all
上给出了类似的答案,但这是你所需要的一步。该答案的子集将回答您的问题。
示例代码:
try
{ // assuming _userID is the user-id to be checked in AD.
PrincipalContext oPrincipalContext = new PrincipalContext(ContextType.Domain, "domain.name", "DC=domain,DC=name", ContextOptions.SimpleBind, "bindUserID", "bindPassword");
UserPrincipal oUserPrincipal = UserPrincipal.FindByIdentity(oPrincipalContext, _userID);
if(null != oUserPrincipal){
// user-id found and valid, continue further.
// If you want to authenticate user, go as per NOTE section in my answer instead.
}
else{
// return the message that the user-id could not be found.
// preferably the user-id should be **SamAccountName**
}
}
catch (Exception e)
{
message = e.ToString();
}
编辑(根据您的评论):
J. Doe
- >尽管这可能让我感到不安......它将成为一名经纪人 在DMZ和内部网络上的客户端之间。
您似乎正在寻找像ADFS这样的东西。 Read more about ADFS from MSDN