Tony created ZEPPELIN-4341:
------------------------------

             Summary: When using multiple realms queryForAuthorizationInfo fails
                 Key: ZEPPELIN-4341
                 URL: https://issues.apache.org/jira/browse/ZEPPELIN-4341
             Project: Zeppelin
          Issue Type: Bug
    Affects Versions: 0.8.1
            Reporter: Tony


I have 2 LDAP realms defined

securityManager.realms = $ldapRealmOne, $ldapRealmTwo

 

Users belong to one of these realms and using 
org.apache.shiro.authc.pam.FirstSuccessfulStrategy allows one to fail silently 
for authentication.

 

But when using rolesByGroup on these realms SecurityUtils#getRoles does not 
catch the exception that is thrown by the realm that the user does not belong 
to.

SecurityUtils#getRoles is only catching NamingException but an 
{{IllegalArgumentException}} is thrown.

 

{{}}{{Caused by: java.lang.IllegalArgumentException: Illegal principal name: 
joeuser}}
{{ at org.apache.zeppelin.realm.LdapRealm.getUserDn(LdapRealm.java:955)}}
{{ at 
org.apache.zeppelin.realm.LdapRealm.getUserDnForSearch(LdapRealm.java:456)}}
{{ at org.apache.zeppelin.realm.LdapRealm.rolesFor(LdapRealm.java:353)}}
{{ at org.apache.zeppelin.realm.LdapRealm.getRoles(LdapRealm.java:330)}}
{{ at 
org.apache.zeppelin.realm.LdapRealm.queryForAuthorizationInfo(LdapRealm.java:295)}}
{{ at 
org.apache.shiro.realm.ldap.DefaultLdapRealm.doGetAuthorizationInfo(DefaultLdapRealm.java:313)}}
{{ at 
org.apache.shiro.realm.AuthorizingRealm.getAuthorizationInfo(AuthorizingRealm.java:341)}}
{{ at 
org.apache.shiro.realm.AuthorizingRealm.hasRole(AuthorizingRealm.java:573)}}

 

Thus, if a user is in the second realm defined in shirio.ini the code never 
tries to fetch their roles.

shiro's doMultiRealmAuthentication method catches everything and logs the error 
instead of short circuiting the realm loop.

Is this fixed in 9.x?  Am I doing something wrong?

Thanks!

 

 

 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to