java - Active Directory : User UPN or DN for NTLM name, 使用纯 LDAP?

标签 java authentication active-directory ldap authorization

我有一个 Java 应用程序,可以通过使用 NTLM 名称将用户登录到 AD LDAP 服务器来对 LDAP 进行身份验证(这是他们习惯的 - 这是一项要求)。

我现在还需要进行授权,因此需要为用户找到一个森林唯一的标识符(DN 或 UPN 应该可以),我可以从中进一步查询目录。

该方法需要绝对可移植,即使 AD 的结构不寻常,否则我只需进行字符串替换并搜索 UPN“${ntlm-user}@${ntlm-domain}.${configured-trailing-domain}”

如何使用纯 LDAP 来做到这一点?

目前,我正在使用 java.naming.directory 包,我想继续使用它,因为它在不与 DN 绑定(bind)但使用 NTLM 名称登录时不会出现问题?

最佳答案

首先,UPN 不是 AD 的必填字段,除非您在 Windows 2003 Server 环境或更高版本中运行。 Win2000 域(实际的或功能)可能没有 UPN。

sAMAccount 名称是唯一可在不同版本的 LDAP 中完全移植的必填字段。不过,它通常与 netbios 域名结合使用

(FOOBAR\JSKEET)

使用纯 LDAP,您可以使用 UPN 或 sAMAccount 名称(甚至是完整的 DN,如果您只有这些)进行绑定(bind)(确保您可以设置密封和安全标志,以便进行安全身份验证!)。

关于java - Active Directory : User UPN or DN for NTLM name, 使用纯 LDAP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2543715/

相关文章:

security - Grails请求过滤器:这种神秘的授权方法的来源是什么?

Azure AD B2C 在用户中导入

PowerShell - 将十六进制转换为字符串(AD 导出)

c# - 如何使用 C# 在 Active Directory 中获取组所属的组?

java - 在接收泛型作为参数的方法中使用泛型类

Java 9+ 无法获取方法局部变量的注解

java - 基于 token 的身份验证和单页应用程序中的注销

django - 为什么 Django 在使用 @login_required 装饰器时有太多登录重定向?

java - 上下文初始化期间遇到异常 - 取消刷新尝试

java - 格式化字符串的最简洁方法