Skip to content

Commit 3b15592

Browse files
committed
Configurable context root for keycloak API
1 parent 3a07d71 commit 3b15592

1 file changed

Lines changed: 18 additions & 6 deletions

File tree

scribejava-apis/src/main/java/com/github/scribejava/apis/KeycloakApi.java

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,39 @@
11
package com.github.scribejava.apis;
22

3+
import java.util.concurrent.ConcurrentHashMap;
4+
import java.util.concurrent.ConcurrentMap;
5+
36
import com.github.scribejava.apis.openid.OpenIdJsonTokenExtractor;
47
import com.github.scribejava.core.builder.api.DefaultApi20;
58
import com.github.scribejava.core.extractors.TokenExtractor;
69
import com.github.scribejava.core.model.OAuth2AccessToken;
710

8-
import java.util.concurrent.ConcurrentHashMap;
9-
import java.util.concurrent.ConcurrentMap;
10-
1111
public class KeycloakApi extends DefaultApi20 {
1212

1313
private static final ConcurrentMap<String, KeycloakApi> INSTANCES = new ConcurrentHashMap<>();
1414

1515
private final String baseUrlWithRealm;
16+
private final String contextRoot;
1617

1718
protected KeycloakApi(String baseUrlWithRealm) {
19+
this(baseUrlWithRealm, "auth");
20+
}
21+
22+
protected KeycloakApi(String baseUrlWithRealm, String contextRoot) {
1823
this.baseUrlWithRealm = baseUrlWithRealm;
24+
this.contextRoot = contextRoot;
1925
}
2026

2127
public static KeycloakApi instance() {
2228
return instance("http://localhost:8080/", "master");
2329
}
2430

2531
public static KeycloakApi instance(String baseUrl, String realm) {
26-
final String defaultBaseUrlWithRealm = composeBaseUrlWithRealm(baseUrl, realm);
32+
return instance(baseUrl, realm, "auth");
33+
}
34+
35+
public static KeycloakApi instance(String baseUrl, String realm, String contextRoot) {
36+
final String defaultBaseUrlWithRealm = composeBaseUrlWithRealm(baseUrl, realm, contextRoot);
2737

2838
//java8: switch to ConcurrentMap::computeIfAbsent
2939
KeycloakApi api = INSTANCES.get(defaultBaseUrlWithRealm);
@@ -37,8 +47,10 @@ public static KeycloakApi instance(String baseUrl, String realm) {
3747
return api;
3848
}
3949

40-
protected static String composeBaseUrlWithRealm(String baseUrl, String realm) {
41-
return baseUrl + (baseUrl.endsWith("/") ? "" : "/") + "auth/realms/" + realm;
50+
protected static String composeBaseUrlWithRealm(String baseUrl, String realm, String contextRoot) {
51+
return baseUrl + (baseUrl.endsWith("/") ? "" : "/") +
52+
(contextRoot != null && !contextRoot.isEmpty() ? contextRoot + (contextRoot.endsWith("/") ? "" : "/") : "") +
53+
"realms/" + realm;
4254
}
4355

4456
@Override

0 commit comments

Comments
 (0)