【发布时间】:2018-03-20 09:24:39
【问题描述】:
我正在使用 Spring Security ActiveDirectoryLdapAuthenticationProvider 和 Spring Boot(基于注释的配置)来通过 Active Directory 进行身份验证并生成令牌。一切正常。
我希望添加一些模拟整个过程的集成测试,我正在考虑使用 Spring 嵌入式 LDAP 服务器。
我添加了这个从网上找到的另一个示例中获得的 ldif 文件。
#Actual test data
dn: dc=test,dc=com
objectclass: top
objectclass: domain
objectclass: extensibleObject
dc: local
# Organizational Units
dn: ou=groups,dc=test,dc=com
objectclass: top
objectclass: organizationalUnit
ou: groups
dn: ou=people,dc=test,dc=com
objectclass: top
objectclass: organizationalUnit
ou: people
# Create People
dn: uid=testuser,ou=people,dc=test,dc=com
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
cn: Test
sn: User
uid: testuser
password: secret
# Create Groups
dn: cn=developers,ou=groups,dc=test,dc=com
objectclass: top
objectclass: groupOfUniqueNames
cn: developers
ou: developer
uniqueMember: uid=testuser,ou=people,dc=test,dc=com
dn: cn=managers,ou=groups,dc=test,dc=com
objectclass: top
objectclass: groupOfUniqueNames
cn: managers
ou: manager
uniqueMember: uid=testuser,ou=people,dc=test,dc=com
但这当然不包括任何 Active Directory 架构的东西。
每个用户都需要有一个sAMAccountName 并且需要有memberOf 属性来确定它所在的组。
有没有什么办法可以使它的行为类似于活动目录,以便 Spring ActiveDirectoryLdapAuthenticationProvider 使用用户的用户名和密码绑定到它并获取其组成员身份以填充其权限?
否则如果这不可行,有没有其他方法可以模拟这个并进行适当的测试?
【问题讨论】:
-
你最终是如何编写集成测试的
-
@ravthiru 不幸的是我没有,只是用真实的东西(Active Directory)对其进行了测试。不理想,但我的时间太紧了,不能在这上面浪费时间。
-
谢谢回复,好像没有什么简单的办法,找了一天。
-
您是否尝试过使用 TestContainers 代替?因为它会自动创建一个 docker 镜像来运行您的集成测试并绑定到它们的生命周期,所以您可以根据需要对其进行自定义。它支持大多数配置,甚至支持读取 docker-compose 文件。 testcontainers.org/features/creating_container
-
@Sara 不,我没有,但听起来有点太重,无法在单元测试中的每个构建中运行。慢吗?
标签: spring-boot spring-security active-directory spring-security-ldap ldif