Zeppelin Shiro LDAP认证优化:实现无域名后缀登录
实现Zeppelin LDAP无后缀用户名登录
当然可以让用户只输入用户名就完成LDAP登录!你只需要在现有的shiro.ini配置中添加一个关键参数,就能自动帮用户拼接域名后缀,不用手动输入。
需要调整的配置项
在你的LDAP Realm配置里添加以下参数:
ldapRealm.userPrincipalNameTemplate = {0}@company.org
这个参数的作用是:当用户输入纯用户名(比如johndoe)时,Shiro会自动把它转换成johndoe@company.org,再去LDAP服务器进行认证,完美匹配你现有的LDAP用户格式。
修改后的完整配置示例
把新增参数加入你的原有配置后,完整的LDAP Realm部分会是这样:
ldapRealm=org.apache.zeppelin.realm.LdapRealm ldapRealm.contextFactory.systemUsername=cn=hosting,dc=company,dc=org ldapRealm.contextFactory.systemPassword=secretpassword ldapRealm.contextFactory.authenticationMechanism=simple ldapRealm.contextFactory.url=ldap://ldap.user.base:389 ldapRealm.pagingSize = 200 ldapRealm.authorizationEnabled = true ldapRealm.searchBase=OU=Users,DC=company,DC=org ldapRealm.userSearchBase=OU=Users,DC=company,DC=org ldapRealm.groupSearchBase=OU=Groups,DC=company,DC=org ldapRealm.memberAttributeValueTemplate=CN={0},OU=Users,DC=company,DC=org ldapRealm.rolesByGroup = "QC":admin_role ldapRealm.userLowerCase = true ldapRealm.groupSearchEnableMatchingRuleInChain = true # 新增的自动拼接域名参数 ldapRealm.userPrincipalNameTemplate = {0}@company.org
额外注意事项
如果你的LDAP服务器(比如Active Directory)使用sAMAccountName作为用户的登录标识,建议再明确设置用户搜索过滤器,确保认证更精准:
ldapRealm.userSearchFilter = (sAMAccountName={0})
这个过滤器会告诉Shiro去LDAP中查找sAMAccountName匹配输入用户名的用户,配合userPrincipalNameTemplate就能实现无缝的无后缀登录。
最后一步
修改完配置后,重启Zeppelin服务,然后测试用纯用户名登录,应该就能正常验证了!
内容的提问来源于stack exchange,提问作者Eliyas
相关产品推荐
相关产品推荐

