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 result = session.userStorageManager().searchForUserByUserAttribute("api-key", apiKey, session.realms().getRealm(realmName)); return result.isEmpty() ? Response.status(401).build(): Response.ok().build(); } }