8000 fix for service account role management in admin v2 by edewit · Pull Request #48166 · keycloak/keycloak · GitHub
[go: up one dir, main page]

Skip to content
Merged
4 changes: 4 additions & 0 deletions quarkus/deployment/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,10 @@
<groupId>org.keycloak</groupId>
<artifactId>keycloak-quarkus-server</artifactId>
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-core</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-core-deployment</artifactId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import java.io.InputStream;

import jakarta.validation.Valid;
import jakarta.ws.rs.Consumes;
import jakarta.ws.rs.DELETE;
import jakarta.ws.rs.GET;
Expand Down Expand Up @@ -42,7 +41,7 @@ public interface ClientApi {
@APIResponse(responseCode = "200", content = @Content(schema = @Schema(implementation = BaseClientRepresentation.class))),
@APIResponse(responseCode = "201", description = "Created", content = @Content(schema = @Schema(implementation = BaseClientRepresentation.class)))
})
Response createOrUpdateClient(@Valid BaseClientRepresentation client);
Response createOrUpdateClient(BaseClientRepresentation client);

@PATCH
@Consumes(PatchTypeNames.JSON_MERGE)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
package org.keycloak.rest.admin.api;

import jakarta.ws.rs.NotFoundException;

import org.keycloak.admin.api.AdminApi;
import org.keycloak.admin.api.client.ClientsApi;
import org.keycloak.models.KeycloakSession;
import org.keycloak.models.RealmModel;
import org.keycloak.protocol.oidc.TokenManager;
import org.keycloak.rest.admin.api.client.DefaultClientsApi;
import org.keycloak.services.resources.admin.AdminRoot;
import org.keycloak.services.resources.admin.RealmAdminResource;
import org.keycloak.services.resources.admin.RealmsAdminResource;
import org.keycloak.services.resources.admin.fgap.AdminPermissionEvaluator;
import org.keycloak.services.resources.admin.fgap.AdminPermissions;

Expand All @@ -17,20 +16,18 @@ public class DefaultAdminApi implements AdminApi {
private final RealmModel realm;
private final AdminPermissionEvaluator permissions;

// v1 resources
private final RealmAdminResource realmAdminResource;

public DefaultAdminApi(KeycloakSession session, String realmName) {
this.session = session;
var authInfo = AdminRoot.authenticateRealmAdminRequest(session);
this.permissions = AdminPermissions.evaluator(session, authInfo.getRealm(), authInfo);
this.realm = session.realms().getRealmByName(realmName);
// remove v1 resource once we are not attached to API v1
this.realmAdminResource = new RealmsAdminResource(session, authInfo, new TokenManager()).getRealmAdmin(realmName);
RealmModel realm = session.realms().getRealmByName(realmName);
Comment thread
edewit marked this conversation as resolved.
Resolved
if (realm == null) throw new NotFoundException("Realm not found.");
session.getContext().setRealm(realm);
this.realm = realm;
this.permissions = AdminPermissions.evaluator(session, realm, authInfo);
}

@Override
public ClientsApi clientsV2() {
return new DefaultClientsApi(session, realm, permissions, realmAdminResource);
return new DefaultClientsApi(session, realm, permissions);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@
import org.keycloak.services.ServiceException;
import org.keycloak.services.client.ClientService;
import org.keycloak.services.client.DefaultClientService;
import org.keycloak.services.resources.admin.RealmAdminResource;
import org.keycloak.services.resources.admin.fgap.AdminPermissionEvaluator;


Expand All @@ -34,14 +33,12 @@ public class DefaultClientApi implements ClientApi {
public DefaultClientApi(@Nonnull KeycloakSession session,
@Nonnull RealmModel realm,
@Nonnull String clientId,
@Nonnull AdminPermissionEvaluator permissions,
// remove v1 resource once we are not attached to API v1
@Nonnull RealmAdminResource realmAdminResource) {
@Nonnull AdminPermissionEvaluator permissions) {
this.session = session;
this.clientId = clientId;
this.realm = realm;
this.permissions = permissions;
this.clientService = new DefaultClientService(session, realm, permissions, realmAdminResource);
this.clientService = new DefaultClientService(session, realm, permissions);
}

@GET
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
import org.keycloak.services.client.ClientService;
import org.keycloak.services.client.ClientService.ClientProjectionOptions;
import org.keycloak.services.client.DefaultClientService;
import org.keycloak.services.resources.admin.RealmAdminResource;
import org.keycloak.services.resources.admin.fgap.AdminPermissionEvaluator;

public class DefaultClientsApi implements ClientsApi {
Expand All @@ -29,19 +28,13 @@ public class DefaultClientsApi implements ClientsApi {
private final RealmModel realm;
private final ClientService clientService;

// v1 resources
private final RealmAdminResource realmAdminResource;

public DefaultClientsApi(@Nonnull KeycloakSession session,
@Nonnull RealmModel realm,
@Nonnull AdminPermissionEvaluator permissions,
// remove v1 resource once we are not attached to API v1
@Nonnull RealmAdminResource realmAdminResource) {
@Nonnull AdminPermissionEvaluator permissions) {
this.session = session;
this.realm = realm;
this.permissions = permissions;
this.realmAdminResource = realmAdminResource;
this.clientService = new DefaultClientService(session, realm, permissions, realmAdminResource);
this.clientService = new DefaultClientService(session, realm, permissions);
}

@Override
Expand Down Expand Up @@ -71,7 +64,7 @@ private void enforceAntiPhishingIfClientMissing(String clientId) {
@Override
public ClientApi client(@PathParam("id") String clientId) {
enforceAntiPhishingIfClientMissing(clientId);
return new DefaultClientApi(session, realm, clientId, permissions, realmAdminResource);
return new DefaultClientApi(session, realm, clientId, permissions);
}

}
Loading
Loading
0