首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LdapConnection对ActiveDirectory中的用户安全吗?

LdapConnection对ActiveDirectory中的用户安全吗?
EN

Stack Overflow用户
提问于 2018-02-28 15:53:02
回答 1查看 641关注 0票数 1

我已经构建了这个函数来验证用户是否在ActiveDirectory中启用。

LdapConnection 传输的数据是加密的?

这是用userpassword传输信息的安全解决方案吗?

代码语言:javascript
复制
try
{
    LdapConnection connection = new LdapConnection(server);

    NetworkCredential credential = new NetworkCredential(user, password);
    connection.Credential = credential;

    connection.Bind();
}
catch (LdapException lexc)
{
   return lexc.Message;
}
catch (Exception exc)
{
   return exc.Message;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-01 02:02:35

不是默认的,不是。

Active Directory工作在几个端口上,这些端口执行相关功能:

  1. 389: LDAP (仅限于单域)--这是默认的
  2. 636: LDAP通过SSL
  3. 3268:全球目录(您的AD林)
  4. 3269: SSL上的全局目录

附加信息:https://msdn.microsoft.com/en-us/library/cc875824.aspx

因此,要使它使用加密连接,您需要告诉它使用端口636或3269,然后告诉它使用SSL,如下所示:

代码语言:javascript
复制
LdapConnection connection = new LdapConnection($"{server}:636");
connection.SessionOptions.SecureSocketLayer=true;

警告:根据我的经验,您在建立此连接时可能会遇到问题,因为默认情况下,域控制器使用自签名证书进行加密,而客户端计算机可能不信任该证书。如果遇到此问题,可以在计算机上安装该证书以使其可信。

但请记住,证书有两个目的:

  1. 加密传输中的数据,以及
  2. 确保与您交谈的服务器实际上是您要与之交谈的服务器。

1将始终与任何证书(甚至自我签署)发生。#2是如果证书是由不受信任的源颁发的,则连接失败的原因。

如果您确信您不需要该证书用于目的#2,那么您可以告诉它忽略与不受信任证书相关的错误,如:

代码语言:javascript
复制
connection.SessionOptions.VerifyServerCertificate =
            new VerifyServerCertificateCallback((con, cer) => true);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49033552

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档