Multitenancy example working on AS 7.1.1

This commit is contained in:
mposolda 2014-11-03 10:41:49 +01:00
parent 380f5dfb4e
commit 28547b0620
2 changed files with 8 additions and 31 deletions

View file

@ -37,6 +37,11 @@ public class PathBasedKeycloakConfigResolver implements KeycloakConfigResolver {
@Override @Override
public KeycloakDeployment resolve(HttpFacade.Request request) { public KeycloakDeployment resolve(HttpFacade.Request request) {
String path = request.getURI(); String path = request.getURI();
int multitenantIndex = path.indexOf("multitenant/");
if (multitenantIndex == -1) {
throw new IllegalStateException("Not able to resolve realm from the request path!");
}
String realm = path.substring(path.indexOf("multitenant/")).split("/")[1]; String realm = path.substring(path.indexOf("multitenant/")).split("/")[1];
if (realm.contains("?")) { if (realm.contains("?")) {
realm = realm.split("\\?")[0]; realm = realm.split("\\?")[0];
@ -46,6 +51,9 @@ public class PathBasedKeycloakConfigResolver implements KeycloakConfigResolver {
if (null == deployment) { if (null == deployment) {
// not found on the simple cache, try to load it from the file system // not found on the simple cache, try to load it from the file system
InputStream is = getClass().getResourceAsStream("/" + realm + "-keycloak.json"); InputStream is = getClass().getResourceAsStream("/" + realm + "-keycloak.json");
if (is == null) {
throw new IllegalStateException("Not able to find the file /" + realm + "-keycloak.json");
}
deployment = KeycloakDeploymentBuilder.build(is); deployment = KeycloakDeploymentBuilder.build(is);
cache.put(realm, deployment); cache.put(realm, deployment);
} }

View file

@ -1,31 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (C) 2014 Juraci Paixão Kröhling <juraci at kroehling.de>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<jboss:jboss
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:jboss="http://www.jboss.com/xml/ns/javaee"
xmlns:s="urn:security:1.1"
version="3.1" impl-version="2.0">
<assembly-descriptor>
<s:security>
<ejb-name>*</ejb-name>
<s:security-domain>keycloak</s:security-domain>
</s:security>
</assembly-descriptor>
</jboss:jboss>