Skip to content
Snippets Groups Projects
Commit ca082b17 authored by OZGCloud's avatar OZGCloud
Browse files

OZG-6867 OZG-6895 Add KeycloakRemoteService

parent dc0456d2
No related branches found
No related tags found
No related merge requests found
......@@ -22,7 +22,6 @@
<build.number>SET_BY_JENKINS</build.number>
<spring-cloud-config-server.version>4.1.2</spring-cloud-config-server.version>
<testcontainers-keycloak.version>3.2.0</testcontainers-keycloak.version>
<keycloak-admin-client.version>23.0.6</keycloak-admin-client.version>
<mongock.version>5.4.0</mongock.version>
<lombok-mapstruct-binding.version>0.2.0</lombok-mapstruct-binding.version>
<mapstruct-processor.version>${mapstruct.version}</mapstruct-processor.version>
......@@ -72,6 +71,13 @@
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<!-- Keycloak -->
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-admin-client</artifactId>
</dependency>
<!-- tools -->
<dependency>
<groupId>org.mapstruct</groupId>
......@@ -145,12 +151,6 @@
<version>${testcontainers-keycloak.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-admin-client</artifactId>
<version>${keycloak-admin-client.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
<profiles>
<profile>
......
package de.ozgcloud.admin.keycloak;
import java.util.List;
import lombok.Builder;
import lombok.Getter;
@Getter
@Builder
public class Group {
private String name;
private String organisationsEinheitId;
private List<Group> subgroups;
}
package de.ozgcloud.admin.keycloak;
import java.util.List;
import org.keycloak.representations.idm.GroupRepresentation;
import org.mapstruct.Mapper;
import org.mapstruct.NullValueCheckStrategy;
@Mapper(nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS)
interface GroupMapper {
List<Group> fromGroupRepresentations(List<GroupRepresentation> groupRepresentations);
Group fromGroupRepresentation(GroupRepresentation groupRepresentation);
}
/*
* Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
* Ministerpräsidenten des Landes Schleswig-Holstein
* Staatskanzlei
* Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
*
* Lizenziert unter der EUPL, Version 1.2 oder - sobald
* diese von der Europäischen Kommission genehmigt wurden -
* Folgeversionen der EUPL ("Lizenz");
* Sie dürfen dieses Werk ausschließlich gemäß
* dieser Lizenz nutzen.
* Eine Kopie der Lizenz finden Sie hier:
*
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
*
* Sofern nicht durch anwendbare Rechtsvorschriften
* gefordert oder in schriftlicher Form vereinbart, wird
* die unter der Lizenz verbreitete Software "so wie sie
* ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
* ausdrücklich oder stillschweigend - verbreitet.
* Die sprachspezifischen Genehmigungen und Beschränkungen
* unter der Lizenz sind dem Lizenztext zu entnehmen.
*/
package de.ozgcloud.admin.keycloak;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import jakarta.validation.constraints.NotBlank;
import lombok.Getter;
import lombok.Setter;
@Setter
@Getter
@Configuration
@ConfigurationProperties("ozgcloud.keycloak.api")
public class KeycloakApiProperties {
@NotBlank
private String url;
@NotBlank
private String user;
@NotBlank
private String password;
private String realm;
private String client;
private String organisationsEinheitIdKey;
private String ldapIdKey;
}
\ No newline at end of file
/*
* Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
* Ministerpräsidenten des Landes Schleswig-Holstein
* Staatskanzlei
* Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
*
* Lizenziert unter der EUPL, Version 1.2 oder - sobald
* diese von der Europäischen Kommission genehmigt wurden -
* Folgeversionen der EUPL ("Lizenz");
* Sie dürfen dieses Werk ausschließlich gemäß
* dieser Lizenz nutzen.
* Eine Kopie der Lizenz finden Sie hier:
*
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
*
* Sofern nicht durch anwendbare Rechtsvorschriften
* gefordert oder in schriftlicher Form vereinbart, wird
* die unter der Lizenz verbreitete Software "so wie sie
* ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
* ausdrücklich oder stillschweigend - verbreitet.
* Die sprachspezifischen Genehmigungen und Beschränkungen
* unter der Lizenz sind dem Lizenztext zu entnehmen.
*/
package de.ozgcloud.admin.keycloak;
import org.keycloak.admin.client.Keycloak;
import org.keycloak.admin.client.KeycloakBuilder;
import org.keycloak.admin.client.resource.RealmResource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import lombok.RequiredArgsConstructor;
@Configuration
@RequiredArgsConstructor
public class KeycloakConfiguration {
private static final String CLIENT = "admin-cli";
private final KeycloakApiProperties keycloakApiProperties;
@Bean
Keycloak keycloak() {
return buildKeycloakInstance();
}
@Bean
RealmResource realmResource(Keycloak keycloak) {
return keycloak.realm(keycloakApiProperties.getRealm());
}
private Keycloak buildKeycloakInstance() {
return KeycloakBuilder.builder()
.serverUrl(keycloakApiProperties.getUrl())
.realm(keycloakApiProperties.getRealm())
.clientId(CLIENT)
.username(keycloakApiProperties.getUser())
.password(keycloakApiProperties.getPassword())
.build();
}
}
package de.ozgcloud.admin.keycloak;
import java.util.stream.Stream;
import org.keycloak.admin.client.resource.RealmResource;
import org.springframework.stereotype.Service;
import lombok.RequiredArgsConstructor;
@Service
@RequiredArgsConstructor
public class KeycloakRemoteService {
private final RealmResource realmResource;
public Stream<Group> getGroups() {
// realmResource.groups().groups();
return Stream.empty();
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment