Github user SarunasG commented on the issue:

    https://github.com/apache/zeppelin/pull/2373
  
    Hi @andreaTP, All,
    
    Could anyone please help me to understand this pull request better ?
    If I integrate all the changes as per this pull request and amend the 
shiro.ini file with OIDC (pac4j) Keycloak configuration settings, I do not get 
it working due to a couple of reasons:
    
    1) If I keep `/** = authc` in [urls] uncommented I get Zeppelin's login 
prompt to enter username and password - so I am not redirected to Keycloak... 
In addition if I enter username and password which is registered in Keycloak I 
get an exception:
    ```
    org.apache.shiro.authc.pam.UnsupportedTokenException: Realm 
[io.buji.pac4j.realm.Pac4jRealm@5e7a3fcc] does not support authentication token 
[org.apache.shiro.authc.UsernamePasswordToken - sarunas, rememberMe=false].  
Please ensure that the appropriate Realm implementation is configured correctly 
or that the realm accepts AuthenticationTokens of this type.
    ```
    
    2) If I comment `/** = authc` in [urls] section out, nothing happens as 
Zeppelin's main screen is loaded without any authentication nor transferring to 
Keycloak... and it is supposed as to be-no auth required.
    
    My shiro.ini example:
    <details>
      <summary>Click to expand</summary>
    <p><pre>
    [main]
    securityManager.realms = $pac4jRealm
    oidcConfig = org.pac4j.oidc.config.OidcConfiguration
    oidcConfig.discoveryURI = 
http://localhost:8080/auth/realms/demo/.well-known/openid-configuration
    oidcConfig.clientId = zeppelin
    oidcConfig.secret = 1baabe32-50bc-49c4-9ac3-a303a9f953c5
    oidcConfig.clientAuthenticationMethodAsString = client_secret_basic
    oidcClient = org.pac4j.oidc.client.OidcClient
    oidcClient.configuration = $oidcConfig
    clients = org.pac4j.core.client.Clients
    clients.callbackUrl = http://localhost:8082/api/callback
    clients.clients = $oidcClient
    #requireRoleAdmin = 
org.pac4j.core.authorization.authorizer.RequireAnyRoleAuthorizer
    #requireRoleAdmin.elements = zeppelin_group
    config = org.pac4j.core.config.Config
    config.clients = $clients
    config.authorizers = admin:$requireRoleAdmin
    pac4jRealm = io.buji.pac4j.realm.Pac4jRealm
    pac4jSubjectFactory = io.buji.pac4j.subject.Pac4jSubjectFactory
    securityManager.subjectFactory = $pac4jSubjectFactory
    oidcSecurityFilter = io.buji.pac4j.filter.SecurityFilter
    oidcSecurityFilter.config = $config
    oidcSecurityFilter.clients = oidcClient<br>
    callbackFilter = io.buji.pac4j.filter.CallbackFilter
    callbackFilter.defaultUrl = http://localhost:8082
    callbackFilter.config = $config<br>
    [urls]
    /api/callback = callbackFilter
    #/** = anon
    /** = authc
    
    </pre></p>
    </details>
    
    -----------------
    So:
     - Has anyone managed to get Zeppelin integrated with e.g. Keycloak by 
means of shiro + pac4j oidc ?
     - Can anyone share example of their shiro.ini file if so ?
     - Is my understanding then correct that changes from this pull request are 
not enough for getting Zeppelin->pac4j-oidc->Keycloak mix working, we need some 
code adjustments in zeppelin-web project? 


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---

Reply via email to