diff --git a/compose.yaml b/compose.yaml
index 0be3049..da8b72e 100644
--- a/compose.yaml
+++ b/compose.yaml
@@ -10,4 +10,4 @@ services:
ports:
- "8080:8080"
volumes:
- - ./local-dev/providers/:/opt/keycloak/providers/
+ - ./ssh-key-provider/target/ssh-key-provider-1.0-SNAPSHOT.jar:/opt/keycloak/providers/ssh-key-provider.jar
\ No newline at end of file
diff --git a/local-dev/.gitkeep b/local-dev/.gitkeep
deleted file mode 100644
index e69de29..0000000
diff --git a/local-dev/providers/.gitkeep b/local-dev/providers/.gitkeep
deleted file mode 100644
index e69de29..0000000
diff --git a/ssh-key-provider/pom.xml b/ssh-key-provider/pom.xml
index 32b6da5..90651ca 100644
--- a/ssh-key-provider/pom.xml
+++ b/ssh-key-provider/pom.xml
@@ -5,7 +5,7 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
- de.ccc.hamburg.keycloak
+ de.ccc.hamburg.keycloak.ssh_key
ssh-key-provider
1.0-SNAPSHOT
diff --git a/ssh-key-provider/src/main/java/de/ccc/hamburg/keycloak/AuthHelper.java b/ssh-key-provider/src/main/java/de/ccc/hamburg/keycloak/ssh_key/AuthHelper.java
similarity index 97%
rename from ssh-key-provider/src/main/java/de/ccc/hamburg/keycloak/AuthHelper.java
rename to ssh-key-provider/src/main/java/de/ccc/hamburg/keycloak/ssh_key/AuthHelper.java
index 6138607..cf3091d 100644
--- a/ssh-key-provider/src/main/java/de/ccc/hamburg/keycloak/AuthHelper.java
+++ b/ssh-key-provider/src/main/java/de/ccc/hamburg/keycloak/ssh_key/AuthHelper.java
@@ -1,4 +1,4 @@
-package de.ccc.hamburg.keycloak;
+package de.ccc.hamburg.keycloak.ssh_key;
import jakarta.ws.rs.ForbiddenException;
import jakarta.ws.rs.NotAuthorizedException;
diff --git a/ssh-key-provider/src/main/java/de/ccc/hamburg/keycloak/SSHKeyResourceProvider.java b/ssh-key-provider/src/main/java/de/ccc/hamburg/keycloak/ssh_key/SSHKeyResourceProvider.java
similarity index 64%
rename from ssh-key-provider/src/main/java/de/ccc/hamburg/keycloak/SSHKeyResourceProvider.java
rename to ssh-key-provider/src/main/java/de/ccc/hamburg/keycloak/ssh_key/SSHKeyResourceProvider.java
index 6d0a475..fb5c2d4 100644
--- a/ssh-key-provider/src/main/java/de/ccc/hamburg/keycloak/SSHKeyResourceProvider.java
+++ b/ssh-key-provider/src/main/java/de/ccc/hamburg/keycloak/ssh_key/SSHKeyResourceProvider.java
@@ -1,4 +1,4 @@
-package de.ccc.hamburg.keycloak;
+package de.ccc.hamburg.keycloak.ssh_key;
import java.util.Map;
import java.util.stream.Stream;
@@ -6,16 +6,11 @@ import java.util.stream.Stream;
import org.jboss.logging.Logger;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
+import jakarta.ws.rs.PathParam;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.Response;
import jakarta.ws.rs.core.MediaType;
-import org.eclipse.microprofile.openapi.annotations.Operation;
-import org.eclipse.microprofile.openapi.annotations.enums.SchemaType;
-import org.eclipse.microprofile.openapi.annotations.media.Content;
-import org.eclipse.microprofile.openapi.annotations.media.Schema;
-import org.eclipse.microprofile.openapi.annotations.responses.APIResponse;
import org.keycloak.models.GroupModel;
-import org.keycloak.models.GroupProvider;
import org.keycloak.models.KeycloakSession;
import org.keycloak.models.RealmModel;
import org.keycloak.models.UserModel;
@@ -41,19 +36,9 @@ public class SSHKeyResourceProvider implements RealmResourceProvider {
}
@GET
- @Path("hello")
+ @Path("export/{group_id}")
@Produces(MediaType.APPLICATION_JSON)
- @Operation(summary = "Public hello endpoint", description = "This endpoint returns hello and the name of the requested realm.")
- @APIResponse(responseCode = "200", description = "", content = {
- @Content(schema = @Schema(implementation = Response.class, type = SchemaType.OBJECT)) })
- public Response helloAnonymous() {
- return Response.ok(Map.of("hello", session.getContext().getRealm().getName())).build();
- }
-
- @GET
- @Path("hello-auth")
- @Produces(MediaType.APPLICATION_JSON)
- public Response helloAuthenticated() {
+ public Response exportKeys(@PathParam("group_id") String groupId) {
UserProvider userProvider = session.users();
try {
@@ -61,7 +46,8 @@ public class SSHKeyResourceProvider implements RealmResourceProvider {
authResult -> authResult.getToken().getIssuedFor().equals("admin-cli"));
RealmModel realm = session.getContext().getRealm();
- GroupModel group = realm.getGroupById("fbf5f78b-d2be-49dd-b04f-11a5e8ee583f");
+ // TODO: add allowlist check
+ GroupModel group = realm.getGroupById(groupId);
LOG.info(String.format("Getting Users from Group \"%s\" with ID %s", group.getName(), group.getId()));
diff --git a/ssh-key-provider/src/main/java/de/ccc/hamburg/keycloak/SSHKeyResourceProviderFactory.java b/ssh-key-provider/src/main/java/de/ccc/hamburg/keycloak/ssh_key/SSHKeyResourceProviderFactory.java
similarity index 75%
rename from ssh-key-provider/src/main/java/de/ccc/hamburg/keycloak/SSHKeyResourceProviderFactory.java
rename to ssh-key-provider/src/main/java/de/ccc/hamburg/keycloak/ssh_key/SSHKeyResourceProviderFactory.java
index 1eb8632..4f615d2 100644
--- a/ssh-key-provider/src/main/java/de/ccc/hamburg/keycloak/SSHKeyResourceProviderFactory.java
+++ b/ssh-key-provider/src/main/java/de/ccc/hamburg/keycloak/ssh_key/SSHKeyResourceProviderFactory.java
@@ -1,16 +1,11 @@
-package de.ccc.hamburg.keycloak;
+package de.ccc.hamburg.keycloak.ssh_key;
import org.keycloak.models.KeycloakSession;
import org.keycloak.models.KeycloakSessionFactory;
import org.keycloak.services.resource.RealmResourceProvider;
import org.keycloak.services.resource.RealmResourceProviderFactory;
-import org.keycloak.Config.Scope;
import com.google.auto.service.AutoService;
import org.keycloak.Config;
-import org.keycloak.models.KeycloakSession;
-import org.keycloak.models.KeycloakSessionFactory;
-import org.keycloak.services.resource.RealmResourceProvider;
-import org.keycloak.services.resource.RealmResourceProviderFactory;
@AutoService(RealmResourceProviderFactory.class)
public class SSHKeyResourceProviderFactory implements RealmResourceProviderFactory {