Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,29 +1,39 @@
package com.github.scribejava.apis;

import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;

import com.github.scribejava.apis.openid.OpenIdJsonTokenExtractor;
import com.github.scribejava.core.builder.api.DefaultApi20;
import com.github.scribejava.core.extractors.TokenExtractor;
import com.github.scribejava.core.model.OAuth2AccessToken;

import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;

public class KeycloakApi extends DefaultApi20 {

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

private final String baseUrlWithRealm;
private final String contextRoot;

protected KeycloakApi(String baseUrlWithRealm) {
this(baseUrlWithRealm, "auth");
}

protected KeycloakApi(String baseUrlWithRealm, String contextRoot) {
this.baseUrlWithRealm = baseUrlWithRealm;
this.contextRoot = contextRoot;
}

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

public static KeycloakApi instance(String baseUrl, String realm) {
final String defaultBaseUrlWithRealm = composeBaseUrlWithRealm(baseUrl, realm);
return instance(baseUrl, realm, "auth");
}

public static KeycloakApi instance(String baseUrl, String realm, String contextRoot) {
final String defaultBaseUrlWithRealm = composeBaseUrlWithRealm(baseUrl, realm, contextRoot);

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

protected static String composeBaseUrlWithRealm(String baseUrl, String realm) {
return baseUrl + (baseUrl.endsWith("/") ? "" : "/") + "auth/realms/" + realm;
protected static String composeBaseUrlWithRealm(String baseUrl, String realm, String contextRoot) {
return baseUrl + (baseUrl.endsWith("/") ? "" : "/") +
(contextRoot != null && !contextRoot.isEmpty() ? contextRoot + (contextRoot.endsWith("/") ? "" : "/") : "") +
"realms/" + realm;
}

@Override
Expand Down