11package com .github .scribejava .apis ;
22
3+ import java .util .concurrent .ConcurrentHashMap ;
4+ import java .util .concurrent .ConcurrentMap ;
5+
36import com .github .scribejava .apis .openid .OpenIdJsonTokenExtractor ;
47import com .github .scribejava .core .builder .api .DefaultApi20 ;
58import com .github .scribejava .core .extractors .TokenExtractor ;
69import com .github .scribejava .core .model .OAuth2AccessToken ;
710
8- import java .util .concurrent .ConcurrentHashMap ;
9- import java .util .concurrent .ConcurrentMap ;
10-
1111public 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