我正在开发一个使用LDAP完成身份验证的应用程序。我没有在本地计算机上安装LDAP,但由于某些原因我也无法设置它。
如何创建存根登录页面,我只需输入用户名和一些仲裁密码,用户就可以进行身份验证。在身份验证之后,应创建一个会话以及如下的调用:
request.getUserPrincipal().getName()
应该返回登录页面上输入的用户名。
我有基于java / J2EE的应用程序,它基于spring,hibernate(如果这有帮助)
答案 0 :(得分:3)
您可以使用不需要任何安装的ApacheDS,并在本地启用嵌入式LDAP服务器。
我们将此场景用于集成测试和开发模式。
这是一个带有spring安全提供程序配置的配置:
<ldap-server ldif="classpath:ldap-users.ldif" port="33389" root="dc=yourCompany,dc=com" />
<beans:bean id="contextSource" class="org.springframework.ldap.core.support.LdapContextSource">
<beans:property name="url" value="ldaps://127.0.0.1:33389/dc=yourCompany,dc=com"/>
<beans:property name="userDn" value="cn=Manager,cn=Users"/>
<beans:property name="password" value="secret"/>
</beans:bean>
<beans:bean id="ldapTemplate" class ="org.springframework.ldap.core.LdapTemplate" >
<beans:constructor-arg ref="contextSource" />
</beans:bean>
此文件与指向真实LDAP服务器的生产文件之间的唯一区别是此配置行:
<ldap-server ldif="classpath:ldap-users.ldif" port="33389" root="dc=yourCompany,dc=com" />
我们在类路径中提供了一个ldap-user.ldif
来定义LDAP模式(Oranizations ...)并填充一些用户进行测试。
最后将其添加到您的依赖项中:
<dependency>
<groupId>org.apache.directory.server</groupId>
<artifactId>apacheds-server-jndi</artifactId>
<version>1.5.5</version>
</dependency>
如果您不使用Maven,只需下载jar并将其放入类路径即可。
希望有帮助。
答案 1 :(得分:-1)
即使您不检查密码,也需要将输入的名称与要进行身份验证的用户ID匹配。为此,您需要查询记录,这实际上意味着在本地系统上设置LDAP。
如果您不能这样做,请尝试OpenLDAP或其他替代方案。