ldap - 使用 Apache 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
任何人都可以提供进行所需更改的正确方法。
解决方案
得到了这样做的正确方法。我们必须在以下行中进行更改
ldapRealm.userDnTemplate=CN={0},OU=AppUsers,DC=test,DC=net
更改将如下所示
ldapRealm.userDnTemplate={0}
现在,sAmAccountName可以用作 userId。登录时,用户名应用作“域/帐户”或“帐户@域”。
如果我们不想使用“域/帐户”,更改如下
ldapRealm.userDnTemplate=domain/{0}
现在用户 ID 将是“帐户”。[帐户 == sAmAccountName 的值]
推荐阅读
- php - 获取字符串中每个字符的字符类型
- ruby-on-rails - 重定向后会话为空
- python-3.x - 可以连接到本地主机但不能远程,pyspark
- linux - 通过环境变量限制 TensorFlow GPU 内存使用
- c++ - 为什么我的 void 函数没有返回正确的值?(C++ 的新手)
- http - 为什么同源策略不阻止 POST 请求?
- jquery - 如何删除全日历 ASP.NET Core MVC 中的事件?
- tensorflow - AttributeError:模块“keras_preprocessing.image”没有属性“DataFrameIterator”
- php - Laravel-Mix 8 与跑步手表
- dask - 使用 `map_partitions` 并行化预测