java - LDAP 可以在 ActiveDirectory 环境中工作吗?

标签 java authentication active-directory ldap

我正在 Active Directory 环境中开发一个独立的 java 应用程序,通常的身份验证方式是 SingleSignOn。
但我有一些接口(interface)不支持 SSO。现在我正在考虑使用 LDAP 来验证应用程序的用户身份。

我的问题是:是否可以在 ActiveDirectory 环境中实现 LDAP?

  • 如果是:它如何协同工作以及我具体需要做什么?
  • 如果否:除了 SSO 之外还有其他替代方案吗?

最佳答案

Active Directory 域 Controller 充当 LDAP 服务器。服务器将在端口 389 上绑定(bind)明文 LDAP,并且可以自动注册证书的服务器将在端口 636 上绑定(bind) ssl 加密 LDAP。

Active Directory 作为 LDAP 服务器基本上与任何其他 LDAP 服务器一样,但架构名称发生了变化。通常在 LDAP 中看到 uid 的地方,Microsoft 使用 sAMAccountName 或 userPrincipalName。域基于域组件 (dc=something) 而不是组织 (o=something)。但基本概念保持不变。

您可以查看域的 SRV 记录,以返回用作 LDAP 服务器的候选域 Controller 列表,您可以配置负载平衡器 VIP 以前置目录并添加用于处理 LDAP 的域 Controller -源身份验证流量,或者您可以拥有一台主要 LDAP 主机,并在连接失败时使用辅助主机。

如果您使用 LDAP-SSL(这是正确的做法),您需要将 CA 链的公钥添加到 cacerts 文件中,除非域管理员已经完成了以下过程:获得由公共(public) CA 签署的 DC 证书。通过 LDAP 连接到 AD 服务器,与系统凭据绑定(bind),在组织的基本 DN 处搜索用户(例如 (&(sAMAccountName=WhatUserEntered))),返回对象完全限定 DN,与完全限定的对象绑定(bind)用户提供的 DN 和密码。检查结果码以确定身份验证是否通过。

关于java - LDAP 可以在 ActiveDirectory 环境中工作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52316480/

相关文章:

python - 如何将此代理切换为使用代理身份验证?

apache - 获取 .htaccess 以允许访问指定 IP,但如果来自任何其他 IP,则请求 .htpasswd 用户 + 密码

c# - 使用 LDAP 获取用户的所有组

java - 什么时候关闭 PreparedStatement.setBlob 使用的 InputStream 是安全的?

java - 通过hibernate动态创建和切换数据库

java - 如果数组不是由 ArrayList 创建的,如何删除该数组对象?

asp.net - 如何设置 MVC 网站以使用与 CRM Online 相同的 SSO,以便它可以被 IFramed?

java - 实例化 FloatBuffer[] 时出现异常

c# - ASP.NET Core 通过 web.config 授权 AD 组

linux - 将 Linux 集成到 Active Directory - 最佳方法?