使用Apache shiro登录Active Directory

时间:2019-03-02 13:58:36

标签: ldap shiro

我们有一个基于Java的应用程序,我们在其中使用 CN 作为登录名。 但是,我们想使用 samAccountName 作为userId。 以下是shiro.ini

contextFactory=com.trmsys.cargo.shield.shiro.ldap.JndiExtLdapContextFactory
contextFactory.url=ldaps://ldaps.test.net:636
contextFactory.systemAuthenticationMechanism=simple
contextFactory.systemUsername=CN=SRV,OU=ServiceUsers,DC=test,DC=net
contextFactory.systemPassword=12WEty%^
contextFactory.environment[java.naming.security.protocol]=ssl

ldapRealm=com.trmsys.cargo.shield.shiro.ldap.JndiLdapRoleRealm
ldapRealm.contextFactory=$contextFactory
ldapRealm.userDnTemplate=CN={0},OU=AppUsers,DC=test,DC=net
ldapRealm.searchBase=OU=Groups,DC=test,DC=net
ldapRealm.searchUserBase=OU=AppUsers,DC=test,DC=net

ldapRealm.groupObjectClass=group
ldapRealm.uniqueMemberAttribute=member
ldapRealm.uniqueMemberAttributeValueTemplate=CN=0},OU=AppUsersDC=test,DC=net

任何人都可以提供进行所需更改的正确方法。

1 个答案:

答案 0 :(得分:0)

获得正确的方法。 我们必须在以下行中进行更改

ldapRealm.userDnTemplate=CN={0},OU=AppUsers,DC=test,DC=net

更改将如下

ldapRealm.userDnTemplate={0}

现在, sAmAccountName 可以用作userId。登录时,用户名应用作“域/帐户”或“帐户@域”。

如果我们不想使用“域/帐户”,请进行以下更改

ldapRealm.userDnTemplate=domain/{0}

现在,用户ID为“帐户”。 [帐户== sAmAccountName的值]