gpt4 book ai didi

java - 使用 ActiveDirectoryLdapAuthenticationProvider 进行集成测试

转载 作者:搜寻专家 更新时间:2023-10-31 20:33:54 35 4
gpt4 key购买 nike

上次我在我们的项目中又添加了一个身份验证提供程序,以便通过 Windows Activity 目录服务器对用户进行身份验证:

<security:authentication-manager id="authenticationManager" erase-credentials="true">
<security:authentication-provider ref="ldapActiveDirectoryAuthProvider" />
<security:authentication-provider ref="authenticationProvider1"/>
<security:authentication-provider ref="authenticationProvider2"/>
</security:authentication-manager>

<bean id="customLdapUserDetailsMapper" class="security.authentication.customLdapUserDetailsMapper">
</bean>

<bean id="ldapActiveDirectoryAuthProvider" class="org.springframework.security.ldap.authentication.ad.ActiveDirectoryLdapAuthenticationProvider">
<constructor-arg value="my.domain"/>
<constructor-arg value="ldap://my.custom.host:389" />
<property name="useAuthenticationRequestCredentials" value="true" />
<property name="convertSubErrorCodesToExceptions" value="true" />
<property name="userDetailsContextMapper" ref="customLdapUserDetailsMapper" />
</bean>

除了与身份验证流程一起使用的现有集成测试外,几乎可以正常工作。也就是说,当 ActiveDirectoryLdapAuthenticationProvider.bindAsUser 时,每个测试都尝试连接到服务器,然后失败,因为 my.custom.host 对此类测试不可用。

我已经开始谷歌搜索,以便为此类测试找到一些模拟,但不幸的是我只找到这篇文章 Integration tests with spring-security and ldap Luke Taylor 建议使用现有的集成测试作为指南。我查看了它,但它不包含针对此类提供程序的任何测试。

我是这类东西的新手,如果知道以下内容会很高兴:

  1. 以任何方式重用此方法与 new ApacheDSContainer("dc=springframework,dc=org", "classpath:test-server.ldif"); 是否正确? LDAP 集成测试(我不确定它是否适合我,因为我没有在我的应用程序上下文中创建 ldap ebbedded ldap 服务器,也没有在提到的配置中指定任何 .ldif 文件)。
  2. 可以通过哪种方式正确地模拟以下提供者?

最佳答案

实际上,您只需提供另一个配置,该配置将被加载用于测试目的。在那里你可以定义一个不同的身份验证提供者,例如它可以对每个人进行身份验证......或者只是简单地停用身份验证。

因为您不想测试 spring 提供的功能。

关于java - 使用 ActiveDirectoryLdapAuthenticationProvider 进行集成测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28347732/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com