在服务器端连接上验证AD用户PrincipalContext

问题描述 投票:1回答:1

作为前言,我有一个客户端和一个服务器程序,客户端通过SSL连接到服务器。

我正在寻找一种方法,使用Active Directory验证通过SSL隧道传递给服务器的PrincipalContextUserPrinicpal。这是为了验证客户端的身份。有谁知道我会怎么做呢?

或者,是否有人知道这样做的不同/更简单的方法?

c# ssl active-directory
1个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.