使用 JBoss 和 Active Directory 获取角色中的用户列表
Get list of users in a role using JBoss with Active Directory
如果我有一个使用 LdapExtLoginModule 连接到 Active Directory 服务器的 JBoss 服务器,我的 java restful web servlet 是否可以接受一个名称作为字符串在 Active Directory 中分组,并向 Active Directory 服务器询问属于该组的用户列表?
当然可以。困难的方法是使用 JNDI 对具有属性 member= 的所有用户 (objectCategory=person) 执行 LDAP 查询。但 JNDI 并不是最优雅的 API,正确找到 AD 服务器并非易事,您必须使用 DN 字符串而不是通常的 Windows 名称来做所有事情。
最简单的方法是使用 Jespa,它使这类事情变得微不足道,它会正确地故障转移到另一个 AD 服务器并且它理解 Windows 组名、帐户名、SID 等. Jespa 还做了很多其他的事情。如果您最终尝试检查组成员身份,而使用 Jespa NtlmSecurityProvider 进行身份验证,则可以使用 Account.isMemberOf(或 isUserInRole)检查组成员身份,这比使用 LDAP 快得多。
如果我有一个使用 LdapExtLoginModule 连接到 Active Directory 服务器的 JBoss 服务器,我的 java restful web servlet 是否可以接受一个名称作为字符串在 Active Directory 中分组,并向 Active Directory 服务器询问属于该组的用户列表?
当然可以。困难的方法是使用 JNDI 对具有属性 member= 的所有用户 (objectCategory=person) 执行 LDAP 查询。但 JNDI 并不是最优雅的 API,正确找到 AD 服务器并非易事,您必须使用 DN 字符串而不是通常的 Windows 名称来做所有事情。
最简单的方法是使用 Jespa,它使这类事情变得微不足道,它会正确地故障转移到另一个 AD 服务器并且它理解 Windows 组名、帐户名、SID 等. Jespa 还做了很多其他的事情。如果您最终尝试检查组成员身份,而使用 Jespa NtlmSecurityProvider 进行身份验证,则可以使用 Account.isMemberOf(或 isUserInRole)检查组成员身份,这比使用 LDAP 快得多。