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

Reply via email to