在 LDAP 中搜索用户(Wildfly)
Search user in LDAP(Wildfly)
我的应用程序正在使用 LDAP 进行用户登录。
Wildfly 配置:
<security-domain name="LDAPAuth">
<authentication>
<login-module code="LdapExtended" flag="required">
<module-option name="java.naming.factory.initial" value="com.sun.jndi.ldap.LdapCtxFactory"/>
....
</login-module>
<login-module name="Database-role" code="Database" flag="optional">
<module-option name="password-stacking" value="useFirstPass"/>
.....
</login-module>
<login-module name="Database-default" code="Database" flag="optional">
<module-option name="password-stacking" value="useFirstPass"/>
....
</login-module>
</authentication>
</security-domain>
我的问题是如何在应用程序中搜索ldap 用户?我想增加在 ldap 中搜索其他用户的可能性(对于已经登录的用户)。
您可以连接到 WildFly 管理 API 并读取安全域配置,但您不应该这样做。
如果您有其他方式,请不要混合使用服务器管理配置和应用程序配置。
向应用程序提供 LDAP 配置(例如,部署描述符中的上下文参数或使用 属性 文件)然后执行某项操作。喜欢:
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, ldapUrl);
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, user);
env.put(Context.SECURITY_CREDENTIALS, password);
final LdapContext ctx = new InitialLdapContext(env, null);
final SearchControls searchControls = new SearchControls();
searchControls.setSearchScope(SearchControls.SUBTREE_SCOPE);
NamingEnumeration<?> namingEnum = ctx.search("dc=mycompany,dc=example", "(uid=*)", searchControls);
while (namingEnum.hasMore()) {
// TODO
}
namingEnum.close();
ctx.close();
我的应用程序正在使用 LDAP 进行用户登录。
Wildfly 配置:
<security-domain name="LDAPAuth">
<authentication>
<login-module code="LdapExtended" flag="required">
<module-option name="java.naming.factory.initial" value="com.sun.jndi.ldap.LdapCtxFactory"/>
....
</login-module>
<login-module name="Database-role" code="Database" flag="optional">
<module-option name="password-stacking" value="useFirstPass"/>
.....
</login-module>
<login-module name="Database-default" code="Database" flag="optional">
<module-option name="password-stacking" value="useFirstPass"/>
....
</login-module>
</authentication>
</security-domain>
我的问题是如何在应用程序中搜索ldap 用户?我想增加在 ldap 中搜索其他用户的可能性(对于已经登录的用户)。
您可以连接到 WildFly 管理 API 并读取安全域配置,但您不应该这样做。
如果您有其他方式,请不要混合使用服务器管理配置和应用程序配置。
向应用程序提供 LDAP 配置(例如,部署描述符中的上下文参数或使用 属性 文件)然后执行某项操作。喜欢:
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, ldapUrl);
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, user);
env.put(Context.SECURITY_CREDENTIALS, password);
final LdapContext ctx = new InitialLdapContext(env, null);
final SearchControls searchControls = new SearchControls();
searchControls.setSearchScope(SearchControls.SUBTREE_SCOPE);
NamingEnumeration<?> namingEnum = ctx.search("dc=mycompany,dc=example", "(uid=*)", searchControls);
while (namingEnum.hasMore()) {
// TODO
}
namingEnum.close();
ctx.close();