我想在Jboss 6.4中实现LDAP验证,我是这方面的新手 . 我想解释一下我是如何理解这个过程的,并且我希望收到关于过程是否正确的意见,因为这里有几种方法可以做到 .
1.-在我的Jboss 6.4中定义一个安全域,这里我将放置LDAP角色: LdapUserMyWeb ,以及此角色的密码 .
login-config.xml
<application-policy name="LdapMyApp">
<authentication>
<login-module code="org.jboss.security.auth.spi.LdapExtLoginModule" flag="required" >
<module-option name="java.naming.factory.initial">com.sun.jndi.ldap.LdapCtxFactory</module-option>
<module-option name="java.naming.provider.url">ldap://localhost:10389</module-option> <!-- LDAP url-->
<module-option name="java.naming.security.authentication">simple</module-option>
<module-option name="bindDN">uid=LdapUserMyWeb,ou=system</module-option>
<module-option name="bindCredential">myPassword</module-option>
<module-option name="baseCtxDN">ou=people,o=sevenSeas</module-option>
<module-option name="rolesCtxDN">ou=groups,o=sevenSeas</module-option>
</login-module>
</authentication>
</application-policy>
2.-我将在WEB-INF中的 jboss-web.xml 中定义
<jboss-web>
<security-domain>java:/jaas/LdapMyApp</security-domain>
</jboss-web>
3.-最后,我需要将特定的URL或servlet限制为某些角色 . 在此示例中,我们仅允许角色 “LdapUserMyWeb” 中的用户访问,
<security-constraint>
<display-name>All resources</display-name>
<web-resource-collection>
<web-resource-name>All resources</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>LdapUserMyWeb</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
</login-config>
3.-在我的Web应用程序(jee6)中,当为角色创建会话时,我将定义HttpSessionEvent和HttpSessionListener: LdapUserMyWeb .
在这里,我需要检查LDAP中是否存在用户和密码,如何从LDAP对象会话中获取此信息?
1 回答
您的LDAP配置看起来是正确的 .
无法从HttpSessionListener中检索用户名,但您可以使用过滤器 . 请看:Getting User Name from Within HttpSessionListener