Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
6.2
-
None
-
None
Description
Solr allows configuring roles to control user access to the system. This is accomplished through rule-based permission definitions which are assigned to users.
The authorization framework in Solr passes the information about the request (to be authorized) using an instance of AuthorizationContext class. Currently the only way to extract authenticated user is via getUserPrincipal() method which returns an instance of java.security.Principal class. The RuleBasedAuthorizationPlugin implementation invokes getName() method on the Principal instance to fetch the list of associated roles.
https://github.com/apache/lucene-solr/blob/2271e73e763b17f971731f6f69d6ffe46c40b944/solr/core/src/java/org/apache/solr/security/RuleBasedAuthorizationPlugin.java#L156
In case of basic authentication mechanism, the principal is the userName. Hence it works fine. But in case of kerberos authentication, the user principal also contains the RELM information e.g. instead of foo, it would return foo@EXAMPLE.COM. This means if the user changes the authentication mechanism, he would also need to change the user-role mapping in authorization section to use foo@EXAMPLE.COM instead of foo. This is not good from usability perspective.