forked from quarkusio/quarkus
-
Notifications
You must be signed in to change notification settings - Fork 0
/
KeycloakDevConsoleProcessor.java
72 lines (65 loc) · 3.97 KB
/
KeycloakDevConsoleProcessor.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
package io.quarkus.oidc.deployment.devservices.keycloak;
import java.util.Map;
import java.util.Optional;
import io.quarkus.deployment.Capabilities;
import io.quarkus.deployment.IsDevelopment;
import io.quarkus.deployment.annotations.BuildProducer;
import io.quarkus.deployment.annotations.BuildStep;
import io.quarkus.deployment.annotations.Consume;
import io.quarkus.deployment.builditem.RuntimeConfigSetupCompleteBuildItem;
import io.quarkus.deployment.pkg.builditem.CurateOutcomeBuildItem;
import io.quarkus.devconsole.spi.DevConsoleRouteBuildItem;
import io.quarkus.devconsole.spi.DevConsoleRuntimeTemplateInfoBuildItem;
import io.quarkus.devconsole.spi.DevConsoleTemplateInfoBuildItem;
import io.quarkus.oidc.deployment.OidcBuildTimeConfig;
import io.quarkus.oidc.deployment.devservices.AbstractDevConsoleProcessor;
import io.quarkus.oidc.deployment.devservices.OidcAuthorizationCodePostHandler;
import io.quarkus.oidc.deployment.devservices.OidcPasswordClientCredHandler;
import io.quarkus.oidc.deployment.devservices.OidcTestServiceHandler;
public class KeycloakDevConsoleProcessor extends AbstractDevConsoleProcessor {
KeycloakBuildTimeConfig keycloakConfig;
OidcBuildTimeConfig oidcConfig;
@BuildStep(onlyIf = IsDevelopment.class)
@Consume(RuntimeConfigSetupCompleteBuildItem.class)
public void setConfigProperties(BuildProducer<DevConsoleTemplateInfoBuildItem> devConsoleInfo,
BuildProducer<DevConsoleRuntimeTemplateInfoBuildItem> devConsoleRuntimeInfo,
Optional<KeycloakDevServicesConfigBuildItem> configProps,
Capabilities capabilities, CurateOutcomeBuildItem curateOutcomeBuildItem) {
if (configProps.isPresent() && configProps.get().getConfig().containsKey("keycloak.url")) {
devConsoleInfo.produce(
new DevConsoleTemplateInfoBuildItem("keycloakAdminUrl", configProps.get().getConfig().get("keycloak.url")));
devConsoleInfo.produce(
new DevConsoleTemplateInfoBuildItem("keycloakUsers",
configProps.get().getProperties().get("oidc.users")));
String realmUrl = configProps.get().getConfig().get("quarkus.oidc.auth-server-url");
produceDevConsoleTemplateItems(capabilities,
devConsoleInfo,
devConsoleRuntimeInfo,
curateOutcomeBuildItem,
"Keycloak",
(String) configProps.get().getConfig().get("quarkus.oidc.application-type"),
oidcConfig.devui.grant.type.isPresent() ? oidcConfig.devui.grant.type.get().getGrantType()
: keycloakConfig.devservices.grant.type.getGrantType(),
realmUrl + "/protocol/openid-connect/auth",
realmUrl + "/protocol/openid-connect/token",
realmUrl + "/protocol/openid-connect/logout",
true);
}
}
@BuildStep(onlyIf = IsDevelopment.class)
void invokeEndpoint(BuildProducer<DevConsoleRouteBuildItem> devConsoleRoute,
Optional<KeycloakDevServicesConfigBuildItem> configProps) {
if (configProps.isPresent() && configProps.get().getConfig().containsKey("keycloak.url")) {
@SuppressWarnings("unchecked")
Map<String, String> users = (Map<String, String>) configProps.get().getProperties().get("oidc.users");
produceDevConsoleRouteItems(devConsoleRoute,
new OidcTestServiceHandler(KeycloakDevServicesProcessor.vertxInstance, oidcConfig.devui.webClientTimeout),
new OidcAuthorizationCodePostHandler(KeycloakDevServicesProcessor.vertxInstance,
oidcConfig.devui.webClientTimeout,
oidcConfig.devui.grantOptions),
new OidcPasswordClientCredHandler(KeycloakDevServicesProcessor.vertxInstance,
oidcConfig.devui.webClientTimeout, users,
oidcConfig.devui.grantOptions));
}
}
}