Compare commits
4 commits
2a66027bea
...
e4b4497b30
| Author | SHA1 | Date | |
|---|---|---|---|
|
e4b4497b30 |
|||
|
8e9674cf5c |
|||
|
9a4dbfeb16 |
|||
|
c518d4a514 |
7 changed files with 10 additions and 29 deletions
|
|
@ -10,4 +10,4 @@ services:
|
||||||
ports:
|
ports:
|
||||||
- "8080:8080"
|
- "8080:8080"
|
||||||
volumes:
|
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
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
<groupId>de.ccc.hamburg.keycloak</groupId>
|
<groupId>de.ccc.hamburg.keycloak.ssh_key</groupId>
|
||||||
<artifactId>ssh-key-provider</artifactId>
|
<artifactId>ssh-key-provider</artifactId>
|
||||||
<version>1.0-SNAPSHOT</version>
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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.ForbiddenException;
|
||||||
import jakarta.ws.rs.NotAuthorizedException;
|
import jakarta.ws.rs.NotAuthorizedException;
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package de.ccc.hamburg.keycloak;
|
package de.ccc.hamburg.keycloak.ssh_key;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
|
@ -6,16 +6,11 @@ import java.util.stream.Stream;
|
||||||
import org.jboss.logging.Logger;
|
import org.jboss.logging.Logger;
|
||||||
import jakarta.ws.rs.GET;
|
import jakarta.ws.rs.GET;
|
||||||
import jakarta.ws.rs.Path;
|
import jakarta.ws.rs.Path;
|
||||||
|
import jakarta.ws.rs.PathParam;
|
||||||
import jakarta.ws.rs.Produces;
|
import jakarta.ws.rs.Produces;
|
||||||
import jakarta.ws.rs.core.Response;
|
import jakarta.ws.rs.core.Response;
|
||||||
import jakarta.ws.rs.core.MediaType;
|
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.GroupModel;
|
||||||
import org.keycloak.models.GroupProvider;
|
|
||||||
import org.keycloak.models.KeycloakSession;
|
import org.keycloak.models.KeycloakSession;
|
||||||
import org.keycloak.models.RealmModel;
|
import org.keycloak.models.RealmModel;
|
||||||
import org.keycloak.models.UserModel;
|
import org.keycloak.models.UserModel;
|
||||||
|
|
@ -41,19 +36,9 @@ public class SSHKeyResourceProvider implements RealmResourceProvider {
|
||||||
}
|
}
|
||||||
|
|
||||||
@GET
|
@GET
|
||||||
@Path("hello")
|
@Path("export/{group_id}")
|
||||||
@Produces(MediaType.APPLICATION_JSON)
|
@Produces(MediaType.APPLICATION_JSON)
|
||||||
@Operation(summary = "Public hello endpoint", description = "This endpoint returns hello and the name of the requested realm.")
|
public Response exportKeys(@PathParam("group_id") String groupId) {
|
||||||
@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() {
|
|
||||||
UserProvider userProvider = session.users();
|
UserProvider userProvider = session.users();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
@ -61,7 +46,8 @@ public class SSHKeyResourceProvider implements RealmResourceProvider {
|
||||||
authResult -> authResult.getToken().getIssuedFor().equals("admin-cli"));
|
authResult -> authResult.getToken().getIssuedFor().equals("admin-cli"));
|
||||||
|
|
||||||
RealmModel realm = session.getContext().getRealm();
|
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()));
|
LOG.info(String.format("Getting Users from Group \"%s\" with ID %s", group.getName(), group.getId()));
|
||||||
|
|
||||||
|
|
@ -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.KeycloakSession;
|
||||||
import org.keycloak.models.KeycloakSessionFactory;
|
import org.keycloak.models.KeycloakSessionFactory;
|
||||||
import org.keycloak.services.resource.RealmResourceProvider;
|
import org.keycloak.services.resource.RealmResourceProvider;
|
||||||
import org.keycloak.services.resource.RealmResourceProviderFactory;
|
import org.keycloak.services.resource.RealmResourceProviderFactory;
|
||||||
import org.keycloak.Config.Scope;
|
|
||||||
import com.google.auto.service.AutoService;
|
import com.google.auto.service.AutoService;
|
||||||
import org.keycloak.Config;
|
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)
|
@AutoService(RealmResourceProviderFactory.class)
|
||||||
public class SSHKeyResourceProviderFactory implements RealmResourceProviderFactory {
|
public class SSHKeyResourceProviderFactory implements RealmResourceProviderFactory {
|
||||||
Loading…
Add table
Add a link
Reference in a new issue