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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在服务器端连接上验证AD用户PrincipalContext相关的知识,希望对你有一定的参考价值。

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

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

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

答案

注意:如果您想使用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

以上是关于在服务器端连接上验证AD用户PrincipalContext的主要内容,如果未能解决你的问题,请参考以下文章

从 ios 和 android 端连接到 xmpp 时获取所有组消息

Blazor 使用 Azure AD 身份验证允许匿名访问

在没有用户密码的情况下生成 AD Kerberos 票证

使用java连接AD域,验证账号密码是否正确

来自部分的完整 AD 域名

如何为 2 台服务器设计用户身份验证