jbx*_*jbx 10 active-directory spring-security ldif spring-security-ldap spring-boot
我正在使用ActiveDirectoryLdapAuthenticationProvider带有Spring Boot 的Spring Security (基于注释的配置)来使用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
Run Code Online (Sandbox Code Playgroud)
但这当然不包括任何Active Directory架构的东西.每个用户都需要拥有一个sAMAccountName并且需要具有该memberOf属性来确定它所在的组.
有没有办法使这个行为类似于活动目录,以便Spring ActiveDirectoryLdapAuthenticationProvider使用用户的用户名和密码绑定它,并获得其组成员身份以填充其权限?
否则,如果这不可行,有没有其他方法来模拟这个并进行适当的测试?
您可以使用 spring ldap-testing 依赖项,它提供 Apache DS 来设置嵌入式 ldap 服务器。看
文章: https: //www.baeldung.com/spring-ldap#testing
您可以使用的其他内存 LDAP Java 实现是: https: //docs.ldap.com/ldap-sdk/docs/in-memory-directory-server.html
// Create the configuration to use for the server.
InMemoryDirectoryServerConfig config =
new InMemoryDirectoryServerConfig("dc=example,dc=com");
config.addAdditionalBindCredentials("cn=Directory Manager", "password");
// Create the directory server instance, populate it with data from the
// "test-data.ldif" file, and start listening for client connections.
InMemoryDirectoryServer ds = new InMemoryDirectoryServer(config);
ds.importFromLDIF(true, "test-data.ldif");
ds.startListening();
Run Code Online (Sandbox Code Playgroud)
或者: https: //github.com/inbloom/ldap-in-memory
如果您更喜欢更像生产的场景,您还可以在测试容器内使用完整的 LDAP 服务器。
| 归档时间: |
|
| 查看次数: |
666 次 |
| 最近记录: |