Hi,

I am testing JWT Authentication Plugin with a keycloak IPD.


Rule-Based Authorization Plugins deny access to some Solr end points.
According to logs, I don't understand why.

For example, in this log line we see that
requested role are either "solr", "solr:admin", "consoleread"
user roles are [profile, solr, admin, email]

The determineIfPermissionPermitsPrincipal method in
RuleBasedAuthorizationPluginBase.java should allow access.

    Set<String> userRoles = getUserRoles(principal);
    for (String role : governingPermission.role) {
      if (userRoles != null && userRoles.contains(role)) {
        log.debug("Governing permission [{}] allows access to role [{}];
permitting access", governingPermission, role);
        return MatchStatus.PERMITTED;
      }
    }
    log.info("This resource is configured to have a permission {}, The
principal {} does not have the right role ", governingPermission,
principal);
    return MatchStatus.FORBIDDEN;

governingPermission.role = "solr", "solr:admin", "consoleread"
userRoles = profile, solr, admin, email

"solr" role should match !?


2022-04-02 12:33:12.693 INFO  (qtp1406253491-27) [   ]
o.a.s.s.RuleBasedAuthorizationPluginBase This resource is configured to
have a permission {
  "collection":null,
  "path":[
    "/admin/info",
    "/admin/info/threads",
    "/admin/info/system",
    "/admin/info/properties"],
  "role":[
    "solr",
    "solr:admin",
    "consoleread"],
  "index":7}, The principal
JWTPrincipalWithUserRoles{username='89c48f69-eead-44ee-bf37-741e2d661b77',
token='*****', claims={exp=1648903285, iat=1648902385,
auth_time=1648902256, jti=1838b4df-801a-410e-903a-f4b9ced085fc, iss=
https://localhost:8443/auth/realms/solr,
sub=89c48f69-eead-44ee-bf37-741e2d661b77, typ=Bearer, azp=solr-app,
nonce=25kzdeinhb9dqflogqy4id8a8zmiyvpkg,
session_state=34ed4051-8cc1-45da-a25e-67054087af34, acr=0,
realm_access={roles=[solr:admin]},
resource_access={solr-app={roles=[solr:admin]}}, scope=openid profile solr
admin email, sid=34ed4051-8cc1-45da-a25e-67054087af34, email_verified=true,
preferred_username=solradmin, given_name=, family_name=}, roles=[profile,
solr, admin, email]} does not have the right role

Any suggestions ?

Regards

Dominique

Reply via email to