Details
diff --git a/services/src/main/java/org/keycloak/authorization/admin/permissions/MgmtPermissions.java b/services/src/main/java/org/keycloak/authorization/admin/permissions/MgmtPermissions.java
index 84aa631..78e41e3 100644
--- a/services/src/main/java/org/keycloak/authorization/admin/permissions/MgmtPermissions.java
+++ b/services/src/main/java/org/keycloak/authorization/admin/permissions/MgmtPermissions.java
@@ -16,6 +16,7 @@
*/
package org.keycloak.authorization.admin.permissions;
+import org.keycloak.Config;
import org.keycloak.authorization.AuthorizationProvider;
import org.keycloak.authorization.AuthorizationProviderFactory;
import org.keycloak.authorization.common.KeycloakIdentity;
@@ -59,6 +60,17 @@ public class MgmtPermissions {
}
+ public ClientModel getRealmManagementClient() {
+ ClientModel client = null;
+ if (realm.getName().equals(Config.getAdminRealm())) {
+ client = realm.getClientByClientId(Config.getAdminRealm() + "-realm");
+ } else {
+ client = realm.getClientByClientId(Constants.REALM_MANAGEMENT_CLIENT_ID);
+
+ }
+ return client;
+ }
+
public boolean isAdminSameRealm() {
return auth == null || realm.getId().equals(auth.getRealm().getId());
}
diff --git a/services/src/main/java/org/keycloak/authorization/admin/permissions/RoleMgmtPermissions.java b/services/src/main/java/org/keycloak/authorization/admin/permissions/RoleMgmtPermissions.java
index 4924131..3c784ce 100644
--- a/services/src/main/java/org/keycloak/authorization/admin/permissions/RoleMgmtPermissions.java
+++ b/services/src/main/java/org/keycloak/authorization/admin/permissions/RoleMgmtPermissions.java
@@ -17,6 +17,7 @@
package org.keycloak.authorization.admin.permissions;
import org.jboss.logging.Logger;
+import org.keycloak.Config;
import org.keycloak.authorization.AuthorizationProvider;
import org.keycloak.authorization.Decision;
import org.keycloak.authorization.common.DefaultEvaluationContext;
@@ -153,19 +154,18 @@ public class RoleMgmtPermissions {
}
}
-
private ClientModel getRoleClient(RoleModel role) {
ClientModel client = null;
if (role.getContainer() instanceof ClientModel) {
client = (ClientModel)role.getContainer();
} else {
- client = realm.getClientByClientId(Constants.REALM_MANAGEMENT_CLIENT_ID);
+ client = root.getRealmManagementClient();
}
return client;
}
public Policy manageUsersPolicy(ResourceServer server) {
- RoleModel role = realm.getClientByClientId(Constants.REALM_MANAGEMENT_CLIENT_ID).getRole(AdminRoles.MANAGE_USERS);
+ RoleModel role = root.getRealmManagementClient().getRole(AdminRoles.MANAGE_USERS);
return rolePolicy(server, role);
}
diff --git a/services/src/main/java/org/keycloak/authorization/admin/permissions/UsersPermissions.java b/services/src/main/java/org/keycloak/authorization/admin/permissions/UsersPermissions.java
index 3f6b72a..d9a16ae 100644
--- a/services/src/main/java/org/keycloak/authorization/admin/permissions/UsersPermissions.java
+++ b/services/src/main/java/org/keycloak/authorization/admin/permissions/UsersPermissions.java
@@ -17,6 +17,7 @@
package org.keycloak.authorization.admin.permissions;
import org.jboss.logging.Logger;
+import org.keycloak.Config;
import org.keycloak.authorization.AuthorizationProvider;
import org.keycloak.authorization.Decision;
import org.keycloak.authorization.common.DefaultEvaluationContext;
@@ -29,6 +30,7 @@ import org.keycloak.authorization.permission.ResourcePermission;
import org.keycloak.authorization.permission.evaluator.PermissionEvaluator;
import org.keycloak.authorization.policy.evaluation.DecisionResult;
import org.keycloak.authorization.policy.evaluation.EvaluationContext;
+import org.keycloak.authorization.store.ResourceServerStore;
import org.keycloak.authorization.util.Permissions;
import org.keycloak.models.AdminRoles;
import org.keycloak.models.ClientModel;
@@ -66,8 +68,9 @@ public class UsersPermissions {
this.root = root;
}
+
private void initialize() {
- ClientModel client = realm.getClientByClientId(Constants.REALM_MANAGEMENT_CLIENT_ID);
+ ClientModel client = root.getRealmManagementClient();
ResourceServer server = root.findOrCreateResourceServer(client);
Scope manageScope = authz.getStoreFactory().getScopeStore().findByName(MgmtPermissions.MANAGE_SCOPE, server.getId());
if (manageScope == null) {
@@ -101,7 +104,7 @@ public class UsersPermissions {
}
public void setPermissionsEnabled(boolean enable) {
- ClientModel client = realm.getClientByClientId(Constants.REALM_MANAGEMENT_CLIENT_ID);
+ ClientModel client = root.getRealmManagementClient();
if (enable) {
initialize();
} else {
@@ -137,7 +140,7 @@ public class UsersPermissions {
}
private ResourceServer getRealmManagementResourceServer() {
- ClientModel client = realm.getClientByClientId(Constants.REALM_MANAGEMENT_CLIENT_ID);
+ ClientModel client = root.getRealmManagementClient();
return root.findOrCreateResourceServer(client);
}
@@ -147,7 +150,7 @@ public class UsersPermissions {
auth.init(RealmAuth.Resource.USER);
return auth.hasManage();
} else {
- ClientModel client = realm.getClientByClientId(Constants.REALM_MANAGEMENT_CLIENT_ID);
+ ClientModel client = root.getRealmManagementClient();
RoleModel manageUsers = client.getRole(AdminRoles.MANAGE_USERS);
return admin.hasRole(manageUsers);
}
@@ -232,7 +235,8 @@ public class UsersPermissions {
}
public ResourceServer resourceServer() {
- ClientModel client = realm.getClientByClientId(Constants.REALM_MANAGEMENT_CLIENT_ID);
+ ResourceServerStore resourceServerStore = authz.getStoreFactory().getResourceServerStore();
+ ClientModel client = root.getRealmManagementClient();
return authz.getStoreFactory().getResourceServerStore().findByClient(client.getId());
}
diff --git a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/admin/FineGrainAdminUnitTest.java b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/admin/FineGrainAdminUnitTest.java
index add91cc..910d139 100644
--- a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/admin/FineGrainAdminUnitTest.java
+++ b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/admin/FineGrainAdminUnitTest.java
@@ -220,7 +220,7 @@ public class FineGrainAdminUnitTest extends AbstractKeycloakTest {
}
- @Test
+ //@Test
public void testUI() throws Exception {
testingClient.server().run(FineGrainAdminUnitTest::setupPolices);
testingClient.server().run(FineGrainAdminUnitTest::setupUsers);