zeppelin使用shiro进行权限验证

zeppelin使用shiro进行权限控制,默认情况下是anonymous,即不用登录即可使用。如果要增加登录验证,可以按照下列步骤操作。修改配置后需要重启才能生效。

cd ${zeppelin}
./bin/zeppelin-daemon.sh restart

1.禁止匿名访问

如果没有conf/zeppelin-site.xml,那么执行

cd $(zeppelin)/conf
cp zeppelin-site.xml.template zeppelin-site.xml
vim zeppelin-site.xml

修改zeppelin.anonymous.allowed属性为false

<property>
  <name>zeppelin.anonymous.allowed</name>
  <value>false</value>
  <description>Anonymous user allowed by default</description>
</property>

2.设置用户密码登录

如果没有conf/shiro.ini,那么执行

cd ${zeppelin}/conf
cp shiro.ini.template shiro.ini
vim shiro.ini

其中的[users]部分,即登录时的账号。等号前是用户名,等号后是密码,逗号后是用户的角色。账号可以不定义角色,也可以定义多个角色。比如用户名user1,对应密码password2,拥有角色role1和role2。

[users]
admin = password1, admin
user1 = password2, role1, role2
user2 = password3, role3
user3 = password4

[roles]配置用户的角色,[urls]部分配置不同web接口的认证方式和需要的角色,/**表示任意路径,验证时按照定义顺序匹配,所以/**一般放在最后一行。比如,下面的配置定义了4种角色。接口version验证方式anon,即不需要验证,不用登录就能访问。接口interperter需要表格形式的验证,且用户具有admin角色才能访问。/** = authc表示其他接口只需要登录验证即可访问,不需要用户有额外的角色。

[roles]
admin = *
role1 = *
role2 = *
role3 = *

[urls]
# anon means the access is anonymous.
# authcBasic means Basic Auth Security
# authc means Form based Auth Security
/api/version = anon
/api/interpreter/** = authc, roles[admin]
/api/credentail/** = authc, roles[role1]
/api/configurations/** = authc, roles[role2]
/** = authc

3. ldap验证

shiro允许使用ldap或AD进行用户验证,配置在[main]部分中,一旦使用这项验证,[users]部分的账号就无法登录。下面是使用ldap的配置,其中userDnTemplate中的{0}表示登录时输入的用户名。

[main]
ldapRealm = org.apache.zeppelin.server.LdapGroupRealm
## search base for ldap groups (only relevant for LdapGroupRealm):
ldapRealm.contextFactory.environment[ldap.searchBase] = dc=company,dc=com
ldapRealm.contextFactory.url = ldap://ldap.company.com
ldapRealm.userDnTemplate = cn={0},ou=people,dc=company,dc=com
ldapRealm.contextFactory.authenticationMechanism = SIMPLE
sessionManager = org.apache.shiro.web.session.mgt.DefaultWebSessionManager
securityManager.sessionManager = $sessionManager
# 86,400,000 milliseconds = 24 hour
securityManager.sessionManager.globalSessionTimeout = 86400000
shiro.loginUrl = /api/login
securityManager.realms = $ldapRealm

上面的配置对应zeppelin-0.6.2版本。使用ldap进行验证时,获取用户的角色需要在ldap中配置objectClass=groupOfNames,具体参见源码(https://github.com/apache/zeppelin/blob/24922e1036c5e410b676fd9b513d008cb046424e/zeppelin-server/src/main/java/org/apache/zeppelin/server/LdapGroupRealm.java#L64)。如果没有获取用户角色,那么[urls]部分配置的需要角色的接口,就没有权限访问。

4. 会话保存

main部分中,以下设置会保存登录会话。如果注释或删除,那么登录后,一旦刷新浏览器,账号就会自动登出。所以建议保留。

[main]
sessionManager = org.apache.shiro.web.session.mgt.DefaultWebSessionManager
securityManager.sessionManager = $sessionManager
## 86,400,000 milliseconds = 24 hour
securityManager.sessionManager.globalSessionTimeout = 86400000
shiro.loginUrl = /api/login

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值