I'd like to get an invite to the Slack channel for apache zeppelin. I'm
working a tough shiro config to get PIV / SAML login working into Zeppelin 0.10
on AWS EMR. Everything looks okay with the saml request and response through
Apache Knox. But when the jwt gets back to zeppelin (after the redirect to
knox and idp), it's saying the realm can't accept the jwt.
>From zeppelin:
DEBUG [2023-05-31 00:12:18,700] ({qtp1521083627-118}
AuthenticatingRealm.java[getAuthenticationInfo]:583) - No AuthenticationInfo
found for submitted AuthenticationToken
[org.apache.zeppelin.realm.jwt.JWTAuthenticationToken@3924c982]. Returning
null.
org.apache.shiro.authc.UnknownAccountException: Realm
[org.apache.zeppelin.realm.jwt.KnoxJwtRealm@31a2833d] was unable to find
account data for the submitted AuthenticationToken
[org.apache.zeppelin.realm.jwt.JWTAuthenticationToken@3924c982].
The shiro.ini:
[main]
### A sample for configuring Knox JWT Realm
knoxJwtRealm = org.apache.zeppelin.realm.jwt.KnoxJwtRealm
## Domain of Knox SSO
knoxJwtRealm.providerUrl = https://knoxsso.domain:8443/
knoxJwtRealm.login = gateway/knoxsso/api/v1/websso
knoxJwtRealm.logout = gateway/knoxssout/api/v1/webssout
knoxJwtRealm.logoutAPI = true
knoxJwtRealm.redirectParam = originalUrl
knoxJwtRealm.cookieName = hadoop-jwt
knoxJwtRealm.publicKeyPath = /etc/pki/tls/certs/ae-emr-sso.crt
# This is required if KNOX SSO is enabled, to check if
"knoxJwtRealm.cookieName" cookie was expired/deleted.
authc = org.apache.zeppelin.realm.jwt.KnoxAuthenticationFilter
anyofrolesuser = org.apache.zeppelin.utils.AnyOfRolesUserAuthorizationFilter
sessionManager = org.apache.shiro.web.session.mgt.DefaultWebSessionManager
cookie = org.apache.shiro.web.servlet.SimpleCookie
cookie.name = JSESSIONID
cookie.secure = false
cookie.httpOnly = false
sessionManager.sessionIdCookie = $cookie
securityManager.sessionManager = $sessionManager
# 86,400,000 milliseconds = 24 hour
securityManager.sessionManager.globalSessionTimeout = 86400000
shiro.loginUrl = /api/login
[urls]
/api/version = anon
/api/interpreter/setting/restart/** = authc
/api/interpreter/** = authc, anyofrolesuser[admin, nrutland]
/api/configurations/** = anyofrolesuser[admin, nrutland]
/api/credential/** = anyofrolesuser[admin, nrutland]
/** = authc