keycloak-api-custom/api-key-module/src/main/java/com/gwidgets/resources/ApiKeyResource.java
2019-06-17 12:36:26 +02:00

30 lines
1 KiB
Java

package com.gwidgets.resources;
import java.util.List;
import java.util.Objects;
import javax.ws.rs.GET;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Response;
import org.keycloak.models.KeycloakSession;
import org.keycloak.models.UserModel;
public class ApiKeyResource {
private KeycloakSession session;
private final String realmName;
public ApiKeyResource(KeycloakSession session) {
this.session = session;
String envRealmName = System.getenv("REALM_NAME");
this.realmName = Objects.isNull(envRealmName) || Objects.equals(System.getenv(envRealmName), "")? "example": envRealmName;
}
@GET
@Produces("application/json")
public Response checkApiKey(@QueryParam("apiKey") String apiKey) {
List<UserModel> result = session.userStorageManager().searchForUserByUserAttribute("api-key", apiKey, session.realms().getRealm(realmName));
return result.isEmpty() ? Response.status(401).build(): Response.ok().build();
}
}