keycloak-aplcache
Details
diff --git a/examples/fuse/camel/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/examples/fuse/camel/src/main/resources/OSGI-INF/blueprint/blueprint.xml
index 698fdd0..506adaa 100644
--- a/examples/fuse/camel/src/main/resources/OSGI-INF/blueprint/blueprint.xml
+++ b/examples/fuse/camel/src/main/resources/OSGI-INF/blueprint/blueprint.xml
@@ -18,9 +18,10 @@
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:camel="http://camel.apache.org/schema/blueprint"
xsi:schemaLocation="
http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
- http://camel.apache.org/schema/blueprint http://camel.apache.org/schema/blueprint/camel-blueprint.xsd">
+ http://camel.apache.org/schema/blueprint http://camel.apache.org/schema/blueprint/camel-blueprint-2.17.1.xsd">
<bean id="kcAdapterConfig" class="org.keycloak.representations.adapters.config.AdapterConfig">
<property name="realm" value="demo"/>
@@ -61,20 +62,64 @@
<property name="realmName" value="does-not-matter"/>
</bean>
+ <bean id="securityHandlerRest" class="org.eclipse.jetty.security.ConstraintSecurityHandler">
+ <property name="authenticator" ref="keycloakAuthenticator" />
+ <property name="constraintMappings">
+ <list>
+ <ref component-id="constraintMapping" />
+ </list>
+ </property>
+ <property name="authMethod" value="BASIC"/>
+ <property name="realmName" value="does-not-matter"/>
+ </bean>
+
+ <!--we need 2 independent instance of sessionHandler, since jetty will try to start both-->
<bean id="sessionHandler" class="org.keycloak.adapters.jetty.spi.WrappingSessionHandler">
<property name="handler" ref="securityHandler" />
</bean>
+ <bean id="sessionHandlerRest" class="org.keycloak.adapters.jetty.spi.WrappingSessionHandler">
+ <property name="handler" ref="securityHandlerRest" />
+ </bean>
<bean id="helloProcessor" class="org.keycloak.example.CamelHelloProcessor" />
<camelContext id="blueprintContext"
trace="false"
xmlns="http://camel.apache.org/schema/blueprint">
+
+ <restConfiguration component="jetty" contextPath="/restdsl"
+ port="8484">
+ <!--the link with Keycloak security handlers happens here-->
+ <endpointProperty key="handlers" value="sessionHandlerRest"></endpointProperty>
+ <endpointProperty key="matchOnUriPrefix" value="true"></endpointProperty>
+ </restConfiguration>
+
+ <rest path="/hello" >
+ <description>Hello rest service</description>
+ <get uri="/{id}" outType="java.lang.String">
+ <description>Just an helllo</description>
+ <to uri="direct:justDirect" />
+ </get>
+
+ </rest>
+
+ <route id="justDirect">
+ <from uri="direct:justDirect"/>
+ <process ref="helloProcessor" />
+ <log message="RestDSL correctly invoked ${body}"/>
+ <setBody>
+ <constant>(__This second sentence is returned from a Camel RestDSL endpoint__)</constant>
+ </setBody>
+ </route>
+
+
<route id="httpBridge">
+ <!--note that we are passing to the endoint the security handlers we have defined above-->
<from uri="jetty:http://0.0.0.0:8383/admin-camel-endpoint?handlers=sessionHandler&matchOnUriPrefix=true" />
<process ref="helloProcessor" />
<log message="The message from camel endpoint contains ${body}"/>
</route>
+
</camelContext>
</blueprint>
\ No newline at end of file
diff --git a/examples/fuse/customer-app-fuse/src/main/java/org/keycloak/example/CamelClient.java b/examples/fuse/customer-app-fuse/src/main/java/org/keycloak/example/CamelClient.java
index 00499e0..ae2eea7 100644
--- a/examples/fuse/customer-app-fuse/src/main/java/org/keycloak/example/CamelClient.java
+++ b/examples/fuse/customer-app-fuse/src/main/java/org/keycloak/example/CamelClient.java
@@ -17,6 +17,13 @@
package org.keycloak.example;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+
+import javax.servlet.http.HttpServletRequest;
+
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
@@ -24,12 +31,6 @@ import org.apache.http.client.methods.HttpGet;
import org.keycloak.KeycloakSecurityContext;
import org.keycloak.adapters.HttpClientBuilder;
-import javax.servlet.http.HttpServletRequest;
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-
/**
* @author <a href="mailto:mposolda@redhat.com">Marek Posolda</a>
*/
@@ -40,7 +41,10 @@ public class CamelClient {
HttpClient client = new HttpClientBuilder()
.disableTrustManager().build();
+
+ StringBuilder sb = new StringBuilder();
try {
+ // Initially let's invoke a simple Camel-Jetty exposed endpoint
HttpGet get = new HttpGet("http://localhost:8383/admin-camel-endpoint");
get.addHeader("Authorization", "Bearer " + session.getTokenString());
try {
@@ -52,7 +56,26 @@ public class CamelClient {
HttpEntity entity = response.getEntity();
InputStream is = entity.getContent();
try {
- return getStringFromInputStream(is);
+ sb.append(getStringFromInputStream(is));
+ } finally {
+ is.close();
+ }
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ // Here we invoke a Jetty endpoint, published using Camel RestDSL
+ get = new HttpGet("http://localhost:8484/restdsl/hello/world");
+ get.addHeader("Authorization", "Bearer " + session.getTokenString());
+ try {
+ HttpResponse response = client.execute(get);
+ if (response.getStatusLine().getStatusCode() != 200) {
+ return "There was a failure processing request with the RestDSL endpoint. You either didn't configure Keycloak properly or you don't have admin permission? Status code is "
+ + response.getStatusLine().getStatusCode();
+ }
+ HttpEntity entity = response.getEntity();
+ InputStream is = entity.getContent();
+ try {
+ sb.append(getStringFromInputStream(is));
} finally {
is.close();
}
@@ -62,6 +85,8 @@ public class CamelClient {
} finally {
client.getConnectionManager().shutdown();
}
+
+ return sb.toString();
}
private static String getStringFromInputStream(InputStream is) {
examples/fuse/demorealm.json 7(+7 -0)
diff --git a/examples/fuse/demorealm.json b/examples/fuse/demorealm.json
index d8a02a8..87bdbca 100644
--- a/examples/fuse/demorealm.json
+++ b/examples/fuse/demorealm.json
@@ -231,6 +231,13 @@
"bearerOnly": true
},
{
+ "clientId": "admin-camel-restdsl",
+ "enabled": true,
+ "adminUrl": "http://localhost:8484/restdsl",
+ "baseUrl": "http://localhost:8484/restdsl",
+ "bearerOnly": true
+ },
+ {
"clientId": "ssh-jmx-admin-client",
"enabled": true,
"publicClient": false,
examples/fuse/pom.xml 2(+1 -1)
diff --git a/examples/fuse/pom.xml b/examples/fuse/pom.xml
index 7d3a23a..7212a13 100755
--- a/examples/fuse/pom.xml
+++ b/examples/fuse/pom.xml
@@ -30,7 +30,7 @@
<artifactId>keycloak-examples-fuse-parent</artifactId>
<packaging>pom</packaging>
<properties>
- <camel.version>2.16.1</camel.version>
+ <camel.version>2.17.0</camel.version>
</properties>
<modules>
<module>customer-app-fuse</module>