commit
93f9d39ea2
108 changed files with 136 additions and 1479 deletions
|
@ -15,7 +15,7 @@
|
||||||
<outputDirectory></outputDirectory>
|
<outputDirectory></outputDirectory>
|
||||||
</fileSet>
|
</fileSet>
|
||||||
<fileSet>
|
<fileSet>
|
||||||
<directory>../../examples</directory>
|
<directory>target/examples</directory>
|
||||||
<outputDirectory>examples</outputDirectory>
|
<outputDirectory>examples</outputDirectory>
|
||||||
<excludes>
|
<excludes>
|
||||||
<exclude>**/.svn/**</exclude>
|
<exclude>**/.svn/**</exclude>
|
||||||
|
|
37
distribution/examples-docs-zip/build.xml
Executable file
37
distribution/examples-docs-zip/build.xml
Executable file
|
@ -0,0 +1,37 @@
|
||||||
|
<project name="example-dist" basedir="." default="all">
|
||||||
|
|
||||||
|
<target name="all">
|
||||||
|
<delete dir="target/examples"/>
|
||||||
|
<copy todir="target/examples/as7-eap-demo" overwrite="true">
|
||||||
|
<fileset dir="../../examples/demo-template">
|
||||||
|
<exclude name="**/*.wildfly"/>
|
||||||
|
<exclude name="**/target/**"/>
|
||||||
|
<exclude name="*.iml"/>
|
||||||
|
</fileset>
|
||||||
|
</copy>
|
||||||
|
<move file="target/examples/as7-eap-demo/README.md.as7" tofile="target/examples/as7-eap-demo/README.md"/>
|
||||||
|
<copy todir="target/examples/wildfly-demo" overwrite="true">
|
||||||
|
<fileset dir="../../examples/demo-template">
|
||||||
|
<exclude name="**/WEB-INF/*.as7"/>
|
||||||
|
<exclude name="**/WEB-INF/jboss-web.xml"/>
|
||||||
|
<exclude name="**/WEB-INF/web.xml"/>
|
||||||
|
<exclude name="target/**"/>
|
||||||
|
<exclude name="*.iml"/>
|
||||||
|
</fileset>
|
||||||
|
</copy>
|
||||||
|
<move file="target/examples/wildfly-demo/README.md.wildfly" tofile="target/examples/wildfly-demo/README.md"/>
|
||||||
|
<move file="target/examples/wildfly-demo/customer-app/src/main/webapp/WEB-INF/web.xml.wildfly" tofile="target/examples/wildfly-demo/customer-app/src/main/webapp/WEB-INF/web.xml"/>
|
||||||
|
<move file="target/examples/wildfly-demo/product-app/src/main/webapp/WEB-INF/web.xml.wildfly" tofile="target/examples/wildfly-demo/product-app/src/main/webapp/WEB-INF/web.xml"/>
|
||||||
|
<move file="target/examples/wildfly-demo/database-service/src/main/webapp/WEB-INF/web.xml.wildfly" tofile="target/examples/wildfly-demo/database-service/src/main/webapp/WEB-INF/web.xml"/>
|
||||||
|
<copy todir="target/examples/unconfigured-demo" overwrite="true">
|
||||||
|
<fileset dir="../../examples/demo-template">
|
||||||
|
<exclude name="**/*.wildfly"/>
|
||||||
|
<exclude name="**/WEB-INF/*.as7"/>
|
||||||
|
<exclude name="**/WEB-INF/jboss-web.xml"/>
|
||||||
|
<exclude name="**/WEB-INF/keycloak.json"/>
|
||||||
|
<exclude name="target/**"/>
|
||||||
|
<exclude name="*.iml"/>
|
||||||
|
</fileset>
|
||||||
|
</copy>
|
||||||
|
</target>
|
||||||
|
</project>
|
|
@ -16,6 +16,44 @@
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<build>
|
<build>
|
||||||
<plugins>
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-antrun-plugin</artifactId>
|
||||||
|
<version>1.7</version>
|
||||||
|
<inherited>false</inherited>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>build-example</id>
|
||||||
|
<goals>
|
||||||
|
<goal>run</goal>
|
||||||
|
</goals>
|
||||||
|
<phase>compile</phase>
|
||||||
|
<configuration>
|
||||||
|
<target>
|
||||||
|
<ant antfile="build.xml" inheritRefs="true">
|
||||||
|
<target name="all"/>
|
||||||
|
</ant>
|
||||||
|
</target>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>ant-contrib</groupId>
|
||||||
|
<artifactId>ant-contrib</artifactId>
|
||||||
|
<version>1.0b3</version>
|
||||||
|
<exclusions>
|
||||||
|
<exclusion>
|
||||||
|
<groupId>ant</groupId>
|
||||||
|
<artifactId>ant</artifactId>
|
||||||
|
</exclusion>
|
||||||
|
</exclusions>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
|
|
||||||
|
</plugin>
|
||||||
|
<!--
|
||||||
<plugin>
|
<plugin>
|
||||||
<artifactId>maven-assembly-plugin</artifactId>
|
<artifactId>maven-assembly-plugin</artifactId>
|
||||||
<version>2.4</version>
|
<version>2.4</version>
|
||||||
|
@ -41,6 +79,7 @@
|
||||||
</execution>
|
</execution>
|
||||||
</executions>
|
</executions>
|
||||||
</plugin>
|
</plugin>
|
||||||
|
-->
|
||||||
</plugins>
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
|
|
||||||
|
|
|
@ -1,49 +0,0 @@
|
||||||
package org.keycloak.example;
|
|
||||||
|
|
||||||
import org.apache.http.HttpEntity;
|
|
||||||
import org.apache.http.HttpResponse;
|
|
||||||
import org.apache.http.client.HttpClient;
|
|
||||||
import org.apache.http.client.methods.HttpGet;
|
|
||||||
import org.keycloak.SkeletonKeySession;
|
|
||||||
import org.keycloak.adapters.HttpClientBuilder;
|
|
||||||
import org.keycloak.util.JsonSerialization;
|
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.InputStream;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
|
|
||||||
* @version $Revision: 1 $
|
|
||||||
*/
|
|
||||||
public class CustomerDatabaseClient {
|
|
||||||
|
|
||||||
static class TypedList extends ArrayList<String> {}
|
|
||||||
|
|
||||||
public static List<String> getCustomers(HttpServletRequest req) {
|
|
||||||
SkeletonKeySession session = (SkeletonKeySession)req.getAttribute(SkeletonKeySession.class.getName());
|
|
||||||
HttpClient client = new HttpClientBuilder()
|
|
||||||
.trustStore(session.getMetadata().getTruststore())
|
|
||||||
.hostnameVerification(HttpClientBuilder.HostnameVerificationPolicy.ANY).build();
|
|
||||||
try {
|
|
||||||
HttpGet get = new HttpGet("http://localhost:8080/database/customers");
|
|
||||||
get.addHeader("Authorization", "Bearer " + session.getTokenString());
|
|
||||||
try {
|
|
||||||
HttpResponse response = client.execute(get);
|
|
||||||
HttpEntity entity = response.getEntity();
|
|
||||||
InputStream is = entity.getContent();
|
|
||||||
try {
|
|
||||||
return JsonSerialization.readValue(is, TypedList.class);
|
|
||||||
} finally {
|
|
||||||
is.close();
|
|
||||||
}
|
|
||||||
} catch (IOException e) {
|
|
||||||
throw new RuntimeException(e);
|
|
||||||
}
|
|
||||||
} finally {
|
|
||||||
client.getConnectionManager().shutdown();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,79 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
||||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
|
||||||
<parent>
|
|
||||||
<artifactId>keycloak-parent</artifactId>
|
|
||||||
<groupId>org.keycloak</groupId>
|
|
||||||
<version>1.0-alpha-1-SNAPSHOT</version>
|
|
||||||
<relativePath>../../../pom.xml</relativePath>
|
|
||||||
</parent>
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
|
||||||
<groupId>org.keycloak.example.as7.demo</groupId>
|
|
||||||
<artifactId>database-service</artifactId>
|
|
||||||
<packaging>war</packaging>
|
|
||||||
<name>JAX-RS Database Service Using OAuth Bearer Tokens</name>
|
|
||||||
<description/>
|
|
||||||
<url>http://maven.apache.org</url>
|
|
||||||
|
|
||||||
<repositories>
|
|
||||||
<repository>
|
|
||||||
<id>jboss</id>
|
|
||||||
<name>jboss repo</name>
|
|
||||||
<url>http://repository.jboss.org/nexus/content/groups/public/</url>
|
|
||||||
</repository>
|
|
||||||
</repositories>
|
|
||||||
|
|
||||||
<dependencies>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.jboss.resteasy</groupId>
|
|
||||||
<artifactId>resteasy-client</artifactId>
|
|
||||||
<scope>provided</scope>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.jboss.resteasy</groupId>
|
|
||||||
<artifactId>resteasy-jaxrs</artifactId>
|
|
||||||
<scope>provided</scope>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.keycloak</groupId>
|
|
||||||
<artifactId>keycloak-as7-adapter</artifactId>
|
|
||||||
<version>${project.version}</version>
|
|
||||||
<scope>provided</scope>
|
|
||||||
<!--
|
|
||||||
<exclusions>
|
|
||||||
<exclusion>
|
|
||||||
<groupId>org.apache.httpcomponents</groupId>
|
|
||||||
<artifactId>httpclient</artifactId>
|
|
||||||
</exclusion>
|
|
||||||
</exclusions>
|
|
||||||
-->
|
|
||||||
</dependency>
|
|
||||||
</dependencies>
|
|
||||||
|
|
||||||
<build>
|
|
||||||
<finalName>database</finalName>
|
|
||||||
<plugins>
|
|
||||||
<plugin>
|
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
|
||||||
<artifactId>maven-deploy-plugin</artifactId>
|
|
||||||
<configuration>
|
|
||||||
<skip>true</skip>
|
|
||||||
</configuration>
|
|
||||||
</plugin>
|
|
||||||
<plugin>
|
|
||||||
<groupId>org.jboss.as.plugins</groupId>
|
|
||||||
<artifactId>jboss-as-maven-plugin</artifactId>
|
|
||||||
<version>7.4.Final</version>
|
|
||||||
</plugin>
|
|
||||||
<plugin>
|
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
|
||||||
<artifactId>maven-compiler-plugin</artifactId>
|
|
||||||
<configuration>
|
|
||||||
<source>1.6</source>
|
|
||||||
<target>1.6</target>
|
|
||||||
</configuration>
|
|
||||||
</plugin>
|
|
||||||
</plugins>
|
|
||||||
</build>
|
|
||||||
</project>
|
|
|
@ -1,7 +0,0 @@
|
||||||
{
|
|
||||||
"realm" : "demo",
|
|
||||||
"resource" : "database-service",
|
|
||||||
"realm-public-key" : "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCrVrCuTtArbgaZzL1hvh0xtL5mc7o0NqPVnYXkLvgcwiC3BjLGw1tGEGoJaXDuSaRllobm53JBhjx33UNv+5z/UMG4kytBWxheNVKnL6GgqlNabMaFfPLPCF8kAgKnsi79NMo+n6KnSY8YeUmec/p2vjO2NjsSAVcWEQMVhJ31LwIDAQAB",
|
|
||||||
"enable-cors" : true
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,43 +0,0 @@
|
||||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
||||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
|
||||||
<parent>
|
|
||||||
<artifactId>keycloak-parent</artifactId>
|
|
||||||
<groupId>org.keycloak</groupId>
|
|
||||||
<version>1.0-alpha-1-SNAPSHOT</version>
|
|
||||||
<relativePath>../../pom.xml</relativePath>
|
|
||||||
</parent>
|
|
||||||
<name>Examples</name>
|
|
||||||
<description/>
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
|
||||||
|
|
||||||
<groupId>org.keycloak</groupId>
|
|
||||||
<artifactId>as7-eap-demo-pom</artifactId>
|
|
||||||
<packaging>pom</packaging>
|
|
||||||
|
|
||||||
<build>
|
|
||||||
<plugins>
|
|
||||||
<plugin>
|
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
|
||||||
<artifactId>maven-deploy-plugin</artifactId>
|
|
||||||
<configuration>
|
|
||||||
<skip>true</skip>
|
|
||||||
</configuration>
|
|
||||||
</plugin>
|
|
||||||
<plugin>
|
|
||||||
<groupId>org.jboss.as.plugins</groupId>
|
|
||||||
<artifactId>jboss-as-maven-plugin</artifactId>
|
|
||||||
<version>7.1.1.Final</version>
|
|
||||||
<configuration>
|
|
||||||
<skip>true</skip>
|
|
||||||
</configuration>
|
|
||||||
</plugin>
|
|
||||||
</plugins>
|
|
||||||
</build>
|
|
||||||
<modules>
|
|
||||||
<module>customer-app</module>
|
|
||||||
<module>product-app</module>
|
|
||||||
<module>database-service</module>
|
|
||||||
<module>third-party</module>
|
|
||||||
<module>third-party-cdi</module>
|
|
||||||
</modules>
|
|
||||||
</project>
|
|
|
@ -1,64 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
||||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
|
||||||
<parent>
|
|
||||||
<artifactId>keycloak-parent</artifactId>
|
|
||||||
<groupId>org.keycloak</groupId>
|
|
||||||
<version>1.0-alpha-1-SNAPSHOT</version>
|
|
||||||
<relativePath>../../../pom.xml</relativePath>
|
|
||||||
</parent>
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
|
||||||
<groupId>org.keycloak.example.as7.demo</groupId>
|
|
||||||
<artifactId>product-portal-example</artifactId>
|
|
||||||
<packaging>war</packaging>
|
|
||||||
<name>Product Portal - Secured via Valve</name>
|
|
||||||
<description/>
|
|
||||||
|
|
||||||
<repositories>
|
|
||||||
<repository>
|
|
||||||
<id>jboss</id>
|
|
||||||
<name>jboss repo</name>
|
|
||||||
<url>http://repository.jboss.org/nexus/content/groups/public/</url>
|
|
||||||
</repository>
|
|
||||||
</repositories>
|
|
||||||
|
|
||||||
<dependencies>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.jboss.spec.javax.servlet</groupId>
|
|
||||||
<artifactId>jboss-servlet-api_3.0_spec</artifactId>
|
|
||||||
<scope>provided</scope>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.keycloak</groupId>
|
|
||||||
<artifactId>keycloak-as7-adapter</artifactId>
|
|
||||||
<version>${project.version}</version>
|
|
||||||
<scope>provided</scope>
|
|
||||||
</dependency>
|
|
||||||
</dependencies>
|
|
||||||
|
|
||||||
<build>
|
|
||||||
<finalName>product-portal</finalName>
|
|
||||||
<plugins>
|
|
||||||
<plugin>
|
|
||||||
<groupId>org.jboss.as.plugins</groupId>
|
|
||||||
<artifactId>jboss-as-maven-plugin</artifactId>
|
|
||||||
<version>7.4.Final</version>
|
|
||||||
</plugin>
|
|
||||||
<plugin>
|
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
|
||||||
<artifactId>maven-deploy-plugin</artifactId>
|
|
||||||
<configuration>
|
|
||||||
<skip>true</skip>
|
|
||||||
</configuration>
|
|
||||||
</plugin>
|
|
||||||
<plugin>
|
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
|
||||||
<artifactId>maven-compiler-plugin</artifactId>
|
|
||||||
<configuration>
|
|
||||||
<source>1.6</source>
|
|
||||||
<target>1.6</target>
|
|
||||||
</configuration>
|
|
||||||
</plugin>
|
|
||||||
</plugins>
|
|
||||||
</build>
|
|
||||||
</project>
|
|
|
@ -1,10 +0,0 @@
|
||||||
{
|
|
||||||
"realm" : "demo",
|
|
||||||
"resource" : "product-portal",
|
|
||||||
"realm-public-key" : "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCrVrCuTtArbgaZzL1hvh0xtL5mc7o0NqPVnYXkLvgcwiC3BjLGw1tGEGoJaXDuSaRllobm53JBhjx33UNv+5z/UMG4kytBWxheNVKnL6GgqlNabMaFfPLPCF8kAgKnsi79NMo+n6KnSY8YeUmec/p2vjO2NjsSAVcWEQMVhJ31LwIDAQAB",
|
|
||||||
"auth-server-url" : "http://localhost:8080/auth",
|
|
||||||
"ssl-not-required" : true,
|
|
||||||
"credentials" : {
|
|
||||||
"password" : "password"
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,7 +0,0 @@
|
||||||
<jboss-deployment-structure>
|
|
||||||
<deployment>
|
|
||||||
<!-- This allows you to define additional dependencies, it is the same as using the Dependencies: manifest attribute -->
|
|
||||||
<dependencies>
|
|
||||||
</dependencies>
|
|
||||||
</deployment>
|
|
||||||
</jboss-deployment-structure>
|
|
|
@ -1,11 +0,0 @@
|
||||||
{
|
|
||||||
"resource" : "third-party",
|
|
||||||
"auth-server-url" : "http://localhost:8080/auth",
|
|
||||||
"ssl-not-required" : true,
|
|
||||||
"credentials" : {
|
|
||||||
"password" : "password"
|
|
||||||
},
|
|
||||||
"scope": {
|
|
||||||
"realm": [ "user" ]
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,7 +0,0 @@
|
||||||
<jboss-deployment-structure>
|
|
||||||
<deployment>
|
|
||||||
<!-- This allows you to define additional dependencies, it is the same as using the Dependencies: manifest attribute -->
|
|
||||||
<dependencies>
|
|
||||||
</dependencies>
|
|
||||||
</deployment>
|
|
||||||
</jboss-deployment-structure>
|
|
|
@ -1,11 +0,0 @@
|
||||||
{
|
|
||||||
"resource" : "third-party",
|
|
||||||
"auth-server-url" : "http://localhost:8080/auth",
|
|
||||||
"ssl-not-required" : true,
|
|
||||||
"credentials" : {
|
|
||||||
"password" : "password"
|
|
||||||
},
|
|
||||||
"scope": {
|
|
||||||
"realm": [ "user" ]
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -8,7 +8,7 @@
|
||||||
<relativePath>../../../pom.xml</relativePath>
|
<relativePath>../../../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>org.keycloak.example.as7.demo</groupId>
|
<groupId>org.keycloak.example.demo</groupId>
|
||||||
<artifactId>customer-portal-example</artifactId>
|
<artifactId>customer-portal-example</artifactId>
|
||||||
<packaging>war</packaging>
|
<packaging>war</packaging>
|
||||||
<name>Customer Portal - Secured via Valve</name>
|
<name>Customer Portal - Secured via Valve</name>
|
||||||
|
@ -30,10 +30,22 @@
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.keycloak</groupId>
|
<groupId>org.keycloak</groupId>
|
||||||
<artifactId>keycloak-as7-adapter</artifactId>
|
<artifactId>keycloak-core</artifactId>
|
||||||
<version>${project.version}</version>
|
<version>${project.version}</version>
|
||||||
<scope>provided</scope>
|
<scope>provided</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.keycloak</groupId>
|
||||||
|
<artifactId>keycloak-adapter-core</artifactId>
|
||||||
|
<version>${project.version}</version>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.httpcomponents</groupId>
|
||||||
|
<artifactId>httpclient</artifactId>
|
||||||
|
<version>${keycloak.apache.httpcomponents.version}</version>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<build>
|
<build>
|
|
@ -37,7 +37,7 @@
|
||||||
|
|
||||||
<login-config>
|
<login-config>
|
||||||
<auth-method>BASIC</auth-method>
|
<auth-method>BASIC</auth-method>
|
||||||
<realm-name>commerce</realm-name>
|
<realm-name>demo</realm-name>
|
||||||
</login-config>
|
</login-config>
|
||||||
|
|
||||||
<security-role>
|
<security-role>
|
0
examples/as7-eap-demo/customer-app/src/main/webapp/index.html → examples/demo-template/customer-app/src/main/webapp/index.html
Normal file → Executable file
0
examples/as7-eap-demo/customer-app/src/main/webapp/index.html → examples/demo-template/customer-app/src/main/webapp/index.html
Normal file → Executable file
|
@ -8,7 +8,7 @@
|
||||||
<relativePath>../../../pom.xml</relativePath>
|
<relativePath>../../../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>org.keycloak.example.wildfly.demo</groupId>
|
<groupId>org.keycloak.example.demo</groupId>
|
||||||
<artifactId>database-service</artifactId>
|
<artifactId>database-service</artifactId>
|
||||||
<packaging>war</packaging>
|
<packaging>war</packaging>
|
||||||
<name>JAX-RS Database Service Using OAuth Bearer Tokens</name>
|
<name>JAX-RS Database Service Using OAuth Bearer Tokens</name>
|
||||||
|
@ -34,20 +34,28 @@
|
||||||
<artifactId>resteasy-jaxrs</artifactId>
|
<artifactId>resteasy-jaxrs</artifactId>
|
||||||
<scope>provided</scope>
|
<scope>provided</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.jboss.spec.javax.servlet</groupId>
|
||||||
|
<artifactId>jboss-servlet-api_3.0_spec</artifactId>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.keycloak</groupId>
|
<groupId>org.keycloak</groupId>
|
||||||
<artifactId>keycloak-undertow-adapter</artifactId>
|
<artifactId>keycloak-core</artifactId>
|
||||||
<version>${project.version}</version>
|
<version>${project.version}</version>
|
||||||
<scope>provided</scope>
|
<scope>provided</scope>
|
||||||
<!--
|
</dependency>
|
||||||
<exclusions>
|
<dependency>
|
||||||
<exclusion>
|
<groupId>org.keycloak</groupId>
|
||||||
<groupId>org.apache.httpcomponents</groupId>
|
<artifactId>keycloak-adapter-core</artifactId>
|
||||||
<artifactId>httpclient</artifactId>
|
<version>${project.version}</version>
|
||||||
</exclusion>
|
<scope>provided</scope>
|
||||||
</exclusions>
|
</dependency>
|
||||||
-->
|
<dependency>
|
||||||
|
<groupId>org.apache.httpcomponents</groupId>
|
||||||
|
<artifactId>httpclient</artifactId>
|
||||||
|
<version>${keycloak.apache.httpcomponents.version}</version>
|
||||||
|
<scope>provided</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
|
|
||||||
<login-config>
|
<login-config>
|
||||||
<auth-method>BASIC</auth-method>
|
<auth-method>BASIC</auth-method>
|
||||||
<realm-name>commerce</realm-name>
|
<realm-name>demo</realm-name>
|
||||||
</login-config>
|
</login-config>
|
||||||
|
|
||||||
<security-role>
|
<security-role>
|
|
@ -11,7 +11,7 @@
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
<groupId>org.keycloak</groupId>
|
<groupId>org.keycloak</groupId>
|
||||||
<artifactId>wildfly-demo-pom</artifactId>
|
<artifactId>demo-pom</artifactId>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
|
|
||||||
<build>
|
<build>
|
|
@ -8,7 +8,7 @@
|
||||||
<relativePath>../../../pom.xml</relativePath>
|
<relativePath>../../../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>org.keycloak.example.wildfly.demo</groupId>
|
<groupId>org.keycloak.example.demo</groupId>
|
||||||
<artifactId>product-portal-example</artifactId>
|
<artifactId>product-portal-example</artifactId>
|
||||||
<packaging>war</packaging>
|
<packaging>war</packaging>
|
||||||
<name>Product Portal </name>
|
<name>Product Portal </name>
|
||||||
|
@ -23,6 +23,11 @@
|
||||||
</repositories>
|
</repositories>
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.jboss.spec.javax.servlet</groupId>
|
||||||
|
<artifactId>jboss-servlet-api_3.0_spec</artifactId>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.jboss.spec.javax.servlet</groupId>
|
<groupId>org.jboss.spec.javax.servlet</groupId>
|
||||||
<artifactId>jboss-servlet-api_3.0_spec</artifactId>
|
<artifactId>jboss-servlet-api_3.0_spec</artifactId>
|
||||||
|
@ -30,10 +35,22 @@
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.keycloak</groupId>
|
<groupId>org.keycloak</groupId>
|
||||||
<artifactId>keycloak-undertow-adapter</artifactId>
|
<artifactId>keycloak-core</artifactId>
|
||||||
<version>${project.version}</version>
|
<version>${project.version}</version>
|
||||||
<scope>provided</scope>
|
<scope>provided</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.keycloak</groupId>
|
||||||
|
<artifactId>keycloak-adapter-core</artifactId>
|
||||||
|
<version>${project.version}</version>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.httpcomponents</groupId>
|
||||||
|
<artifactId>httpclient</artifactId>
|
||||||
|
<version>${keycloak.apache.httpcomponents.version}</version>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<build>
|
<build>
|
|
@ -1,6 +1,5 @@
|
||||||
<jboss-deployment-structure>
|
<jboss-deployment-structure>
|
||||||
<deployment>
|
<deployment>
|
||||||
<!-- This allows you to define additional dependencies, it is the same as using the Dependencies: manifest attribute -->
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<!-- The keycloak-as7-adapter is required -->
|
<!-- The keycloak-as7-adapter is required -->
|
||||||
<module name="org.keycloak.keycloak-as7-adapter"/>
|
<module name="org.keycloak.keycloak-as7-adapter"/>
|
|
@ -37,7 +37,7 @@
|
||||||
|
|
||||||
<login-config>
|
<login-config>
|
||||||
<auth-method>BASIC</auth-method>
|
<auth-method>BASIC</auth-method>
|
||||||
<realm-name>commerce</realm-name>
|
<realm-name>demo</realm-name>
|
||||||
</login-config>
|
</login-config>
|
||||||
|
|
||||||
<security-role>
|
<security-role>
|
0
examples/as7-eap-demo/product-app/src/main/webapp/index.html → examples/demo-template/product-app/src/main/webapp/index.html
Normal file → Executable file
0
examples/as7-eap-demo/product-app/src/main/webapp/index.html → examples/demo-template/product-app/src/main/webapp/index.html
Normal file → Executable file
|
@ -8,7 +8,7 @@
|
||||||
<relativePath>../../../pom.xml</relativePath>
|
<relativePath>../../../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>org.keycloak.example.as7.demo</groupId>
|
<groupId>org.keycloak.example.demo</groupId>
|
||||||
<artifactId>oauth-client-cdi-example</artifactId>
|
<artifactId>oauth-client-cdi-example</artifactId>
|
||||||
<packaging>war</packaging>
|
<packaging>war</packaging>
|
||||||
<name>Simple OAuth Client Using CDI and JSF</name>
|
<name>Simple OAuth Client Using CDI and JSF</name>
|
|
@ -8,7 +8,7 @@
|
||||||
<relativePath>../../../pom.xml</relativePath>
|
<relativePath>../../../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>org.keycloak.example.as7.demo</groupId>
|
<groupId>org.keycloak.example.demo</groupId>
|
||||||
<artifactId>oauth-client-example</artifactId>
|
<artifactId>oauth-client-example</artifactId>
|
||||||
<packaging>war</packaging>
|
<packaging>war</packaging>
|
||||||
<name>Simple OAuth Client</name>
|
<name>Simple OAuth Client</name>
|
0
examples/as7-eap-demo/third-party/src/main/webapp/index.html → examples/demo-template/third-party/src/main/webapp/index.html
vendored
Normal file → Executable file
0
examples/as7-eap-demo/third-party/src/main/webapp/index.html → examples/demo-template/third-party/src/main/webapp/index.html
vendored
Normal file → Executable file
|
@ -34,7 +34,6 @@
|
||||||
</plugins>
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
<modules>
|
<modules>
|
||||||
<module>as7-eap-demo</module>
|
<module>demo-template</module>
|
||||||
<module>wildfly-demo</module>
|
|
||||||
</modules>
|
</modules>
|
||||||
</project>
|
</project>
|
||||||
|
|
|
@ -1,64 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
||||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
|
||||||
<parent>
|
|
||||||
<artifactId>keycloak-parent</artifactId>
|
|
||||||
<groupId>org.keycloak</groupId>
|
|
||||||
<version>1.0-alpha-1-SNAPSHOT</version>
|
|
||||||
<relativePath>../../../pom.xml</relativePath>
|
|
||||||
</parent>
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
|
||||||
<groupId>org.keycloak.example.wildfly.demo</groupId>
|
|
||||||
<artifactId>customer-portal-example</artifactId>
|
|
||||||
<packaging>war</packaging>
|
|
||||||
<name>Customer Portal - Secured via Valve</name>
|
|
||||||
<description/>
|
|
||||||
|
|
||||||
<repositories>
|
|
||||||
<repository>
|
|
||||||
<id>jboss</id>
|
|
||||||
<name>jboss repo</name>
|
|
||||||
<url>http://repository.jboss.org/nexus/content/groups/public/</url>
|
|
||||||
</repository>
|
|
||||||
</repositories>
|
|
||||||
|
|
||||||
<dependencies>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.jboss.spec.javax.servlet</groupId>
|
|
||||||
<artifactId>jboss-servlet-api_3.0_spec</artifactId>
|
|
||||||
<scope>provided</scope>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.keycloak</groupId>
|
|
||||||
<artifactId>keycloak-undertow-adapter</artifactId>
|
|
||||||
<version>${project.version}</version>
|
|
||||||
<scope>provided</scope>
|
|
||||||
</dependency>
|
|
||||||
</dependencies>
|
|
||||||
|
|
||||||
<build>
|
|
||||||
<finalName>customer-portal</finalName>
|
|
||||||
<plugins>
|
|
||||||
<plugin>
|
|
||||||
<groupId>org.jboss.as.plugins</groupId>
|
|
||||||
<artifactId>jboss-as-maven-plugin</artifactId>
|
|
||||||
<version>7.4.Final</version>
|
|
||||||
</plugin>
|
|
||||||
<plugin>
|
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
|
||||||
<artifactId>maven-deploy-plugin</artifactId>
|
|
||||||
<configuration>
|
|
||||||
<skip>true</skip>
|
|
||||||
</configuration>
|
|
||||||
</plugin>
|
|
||||||
<plugin>
|
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
|
||||||
<artifactId>maven-compiler-plugin</artifactId>
|
|
||||||
<configuration>
|
|
||||||
<source>1.6</source>
|
|
||||||
<target>1.6</target>
|
|
||||||
</configuration>
|
|
||||||
</plugin>
|
|
||||||
</plugins>
|
|
||||||
</build>
|
|
||||||
</project>
|
|
|
@ -1,11 +0,0 @@
|
||||||
{
|
|
||||||
"realm" : "demo",
|
|
||||||
"resource" : "customer-portal",
|
|
||||||
"realm-public-key" : "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCrVrCuTtArbgaZzL1hvh0xtL5mc7o0NqPVnYXkLvgcwiC3BjLGw1tGEGoJaXDuSaRllobm53JBhjx33UNv+5z/UMG4kytBWxheNVKnL6GgqlNabMaFfPLPCF8kAgKnsi79NMo+n6KnSY8YeUmec/p2vjO2NjsSAVcWEQMVhJ31LwIDAQAB",
|
|
||||||
"auth-server-url" : "http://localhost:8080/auth",
|
|
||||||
"ssl-not-required" : true,
|
|
||||||
"expose-token" : true,
|
|
||||||
"credentials" : {
|
|
||||||
"password" : "password"
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,11 +0,0 @@
|
||||||
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
|
|
||||||
pageEncoding="ISO-8859-1"%>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>Customer Admin Interface</title>
|
|
||||||
</head>
|
|
||||||
<body bgcolor="#E3F6CE">
|
|
||||||
<h1>Customer Admin Interface</h1>
|
|
||||||
User <b><%=request.getUserPrincipal().getName()%></b> made this request.
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,38 +0,0 @@
|
||||||
<!doctype html>
|
|
||||||
<html lang="en">
|
|
||||||
|
|
||||||
<body>
|
|
||||||
|
|
||||||
<script type="text/javascript">
|
|
||||||
console.log('here!!!!!');
|
|
||||||
var xhr1 = new XMLHttpRequest();
|
|
||||||
xhr1.open('GET', '/customer-portal/k_query_bearer_token');
|
|
||||||
xhr1.onreadystatechange = function () {
|
|
||||||
console.log('got here');
|
|
||||||
if (this.status == 200 && this.readyState == 4) {
|
|
||||||
var token = this.responseText;
|
|
||||||
console.log('Access token: ' + token);
|
|
||||||
var xhr = new XMLHttpRequest();
|
|
||||||
xhr.open('GET', 'http://localhost:8080/database/customers');
|
|
||||||
xhr.withCredentials = true;
|
|
||||||
xhr.setRequestHeader('Authorization', 'Bearer ' + token);
|
|
||||||
xhr.onreadystatechange = function () {
|
|
||||||
console.log('got auth success');
|
|
||||||
if (this.status == 200 && this.readyState == 4) {
|
|
||||||
console.log('db response: ' + this.responseText);
|
|
||||||
} else if (this.status != 200) {
|
|
||||||
console.log('there was an error:' + this.status);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
xhr.send();
|
|
||||||
} else if (this.status != 200) {
|
|
||||||
console.log('there was an error on get bearer token:' + this.status);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
xhr1.send();
|
|
||||||
|
|
||||||
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,30 +0,0 @@
|
||||||
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
|
|
||||||
pageEncoding="ISO-8859-1"%>
|
|
||||||
<%@ page import="org.keycloak.example.CustomerDatabaseClient" %>
|
|
||||||
<%@ page import="org.keycloak.util.KeycloakUriBuilder" %>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>Customer View Page</title>
|
|
||||||
</head>
|
|
||||||
<body bgcolor="#E3F6CE">
|
|
||||||
<%
|
|
||||||
String logoutUri = KeycloakUriBuilder.fromUri("http://localhost:8080/auth/rest/realms/demo/tokens/logout")
|
|
||||||
.queryParam("redirect_uri", "http://localhost:8080/customer-portal").build().toString();
|
|
||||||
String acctUri = "http://localhost:8080/auth/rest/realms/demo/account";
|
|
||||||
%>
|
|
||||||
<p>Goto: <a href="http://localhost:8080/product-portal">products</a> | <a href="<%=logoutUri%>">logout</a> | <a href="<%=acctUri%>">manage acct</a></p>
|
|
||||||
User <b><%=request.getUserPrincipal().getName()%></b> made this request.
|
|
||||||
<h2>Customer Listing</h2>
|
|
||||||
<%
|
|
||||||
java.util.List<String> list = CustomerDatabaseClient.getCustomers(request);
|
|
||||||
for (String cust : list)
|
|
||||||
{
|
|
||||||
out.print("<p>");
|
|
||||||
out.print(cust);
|
|
||||||
out.println("</p>");
|
|
||||||
|
|
||||||
}
|
|
||||||
%>
|
|
||||||
<br><br>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,14 +0,0 @@
|
||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
|
||||||
"http://www.w3.org/TR/html4/loose.dtd">
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title></title>
|
|
||||||
</head>
|
|
||||||
<body bgcolor="#E3F6CE">
|
|
||||||
<h1>Customer Portal</h1>
|
|
||||||
|
|
||||||
<p><a href="customers/view.jsp">Customer Listing</a></p>
|
|
||||||
<p><a href="admin/admin.html">Customer Admin Interface</a></p>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,26 +0,0 @@
|
||||||
package org.keycloak.example.oauth;
|
|
||||||
|
|
||||||
import javax.ws.rs.GET;
|
|
||||||
import javax.ws.rs.Path;
|
|
||||||
import javax.ws.rs.Produces;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
|
|
||||||
* @version $Revision: 1 $
|
|
||||||
*/
|
|
||||||
@Path("customers")
|
|
||||||
public class CustomerService
|
|
||||||
{
|
|
||||||
@GET
|
|
||||||
@Produces("application/json")
|
|
||||||
public List<String> getCustomers()
|
|
||||||
{
|
|
||||||
ArrayList<String> rtn = new ArrayList<String>();
|
|
||||||
rtn.add("Bill Burke");
|
|
||||||
rtn.add("Ron Sigal");
|
|
||||||
rtn.add("Weinan Li");
|
|
||||||
return rtn;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,13 +0,0 @@
|
||||||
package org.keycloak.example.oauth;
|
|
||||||
|
|
||||||
import javax.ws.rs.ApplicationPath;
|
|
||||||
import javax.ws.rs.core.Application;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
|
|
||||||
* @version $Revision: 1 $
|
|
||||||
*/
|
|
||||||
@ApplicationPath("/")
|
|
||||||
public class DataApplication extends Application
|
|
||||||
{
|
|
||||||
}
|
|
|
@ -1,26 +0,0 @@
|
||||||
package org.keycloak.example.oauth;
|
|
||||||
|
|
||||||
import javax.ws.rs.GET;
|
|
||||||
import javax.ws.rs.Path;
|
|
||||||
import javax.ws.rs.Produces;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
|
|
||||||
* @version $Revision: 1 $
|
|
||||||
*/
|
|
||||||
@Path("products")
|
|
||||||
public class ProductService
|
|
||||||
{
|
|
||||||
@GET
|
|
||||||
@Produces("application/json")
|
|
||||||
public List<String> getProducts()
|
|
||||||
{
|
|
||||||
ArrayList<String> rtn = new ArrayList<String>();
|
|
||||||
rtn.add("iphone");
|
|
||||||
rtn.add("ipad");
|
|
||||||
rtn.add("ipod");
|
|
||||||
return rtn;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,50 +0,0 @@
|
||||||
package org.keycloak.example.oauth;
|
|
||||||
|
|
||||||
import org.apache.http.HttpEntity;
|
|
||||||
import org.apache.http.HttpResponse;
|
|
||||||
import org.apache.http.client.HttpClient;
|
|
||||||
import org.apache.http.client.methods.HttpGet;
|
|
||||||
import org.keycloak.SkeletonKeySession;
|
|
||||||
import org.keycloak.adapters.HttpClientBuilder;
|
|
||||||
import org.keycloak.util.JsonSerialization;
|
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.InputStream;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
|
|
||||||
* @version $Revision: 1 $
|
|
||||||
*/
|
|
||||||
public class ProductDatabaseClient
|
|
||||||
{
|
|
||||||
static class TypedList extends ArrayList<String> {}
|
|
||||||
|
|
||||||
public static List<String> getProducts(HttpServletRequest req) {
|
|
||||||
SkeletonKeySession session = (SkeletonKeySession)req.getAttribute(SkeletonKeySession.class.getName());
|
|
||||||
HttpClient client = new HttpClientBuilder()
|
|
||||||
.trustStore(session.getMetadata().getTruststore())
|
|
||||||
.hostnameVerification(HttpClientBuilder.HostnameVerificationPolicy.ANY).build();
|
|
||||||
try {
|
|
||||||
HttpGet get = new HttpGet("http://localhost:8080/database/products");
|
|
||||||
get.addHeader("Authorization", "Bearer " + session.getTokenString());
|
|
||||||
try {
|
|
||||||
HttpResponse response = client.execute(get);
|
|
||||||
HttpEntity entity = response.getEntity();
|
|
||||||
InputStream is = entity.getContent();
|
|
||||||
try {
|
|
||||||
return JsonSerialization.readValue(is, TypedList.class);
|
|
||||||
} finally {
|
|
||||||
is.close();
|
|
||||||
}
|
|
||||||
} catch (IOException e) {
|
|
||||||
throw new RuntimeException(e);
|
|
||||||
}
|
|
||||||
} finally {
|
|
||||||
client.getConnectionManager().shutdown();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,11 +0,0 @@
|
||||||
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
|
|
||||||
pageEncoding="ISO-8859-1"%>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>Product Admin Interface</title>
|
|
||||||
</head>
|
|
||||||
<body bgcolor="#F5F6CE">
|
|
||||||
<h1>Product Admin Interface</h1>
|
|
||||||
User <b><%=request.getUserPrincipal().getName()%></b> made this request.
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,14 +0,0 @@
|
||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
|
||||||
"http://www.w3.org/TR/html4/loose.dtd">
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title></title>
|
|
||||||
</head>
|
|
||||||
<body bgcolor="#F5F6CE">
|
|
||||||
<h1>Product Portal</h1>
|
|
||||||
|
|
||||||
<p><a href="products/view.jsp">Product Listing</a></p>
|
|
||||||
<p><a href="admin/admin.html">Admin Interface</a></p>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,31 +0,0 @@
|
||||||
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
|
|
||||||
pageEncoding="ISO-8859-1"%>
|
|
||||||
<%@ page import="org.keycloak.example.oauth.ProductDatabaseClient" %>
|
|
||||||
<%@ page import="org.keycloak.util.KeycloakUriBuilder" %>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>Product View Page</title>
|
|
||||||
</head>
|
|
||||||
<body bgcolor="#F5F6CE">
|
|
||||||
<%
|
|
||||||
String logoutUri = KeycloakUriBuilder.fromUri("http://localhost:8080/auth/rest/realms/demo/tokens/logout")
|
|
||||||
.queryParam("redirect_uri", "http://localhost:8080/product-portal").build().toString();
|
|
||||||
String acctUri = "http://localhost:8080/auth/rest/realms/demo/account";
|
|
||||||
%>
|
|
||||||
|
|
||||||
<p>Goto: <a href="http://localhost:8080/customer-portal">customers</a> | <a href="<%=logoutUri%>">logout</a> | <a href="<%=acctUri%>">manage acct</a></p>
|
|
||||||
User <b><%=request.getUserPrincipal().getName()%></b> made this request.
|
|
||||||
<h2>Product Listing</h2>
|
|
||||||
<%
|
|
||||||
java.util.List<String> list = ProductDatabaseClient.getProducts(request);
|
|
||||||
for (String cust : list)
|
|
||||||
{
|
|
||||||
out.print("<p>");
|
|
||||||
out.print(cust);
|
|
||||||
out.println("</p>");
|
|
||||||
|
|
||||||
}
|
|
||||||
%>
|
|
||||||
<br><br>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,74 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
||||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
|
||||||
<parent>
|
|
||||||
<artifactId>keycloak-parent</artifactId>
|
|
||||||
<groupId>org.keycloak</groupId>
|
|
||||||
<version>1.0-alpha-1-SNAPSHOT</version>
|
|
||||||
<relativePath>../../../pom.xml</relativePath>
|
|
||||||
</parent>
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
|
||||||
<groupId>org.keycloak.example.wildfly.demo</groupId>
|
|
||||||
<artifactId>oauth-client-cdi-example</artifactId>
|
|
||||||
<packaging>war</packaging>
|
|
||||||
<name>Simple OAuth Client Using CDI and JSF</name>
|
|
||||||
<description/>
|
|
||||||
|
|
||||||
<dependencies>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.jboss.spec.javax.servlet</groupId>
|
|
||||||
<artifactId>jboss-servlet-api_3.0_spec</artifactId>
|
|
||||||
<version>1.0.1.Final</version>
|
|
||||||
<scope>provided</scope>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>javax.enterprise</groupId>
|
|
||||||
<artifactId>cdi-api</artifactId>
|
|
||||||
<version>1.0-SP4</version>
|
|
||||||
<scope>provided</scope>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.jboss.spec.javax.faces</groupId>
|
|
||||||
<artifactId>jboss-jsf-api_2.1_spec</artifactId>
|
|
||||||
<version>2.0.1.Final</version>
|
|
||||||
<scope>provided</scope>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.jboss.logging</groupId>
|
|
||||||
<artifactId>jboss-logging</artifactId>
|
|
||||||
<version>3.1.2.GA</version>
|
|
||||||
<scope>provided</scope>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.keycloak</groupId>
|
|
||||||
<artifactId>keycloak-servlet-oauth-client</artifactId>
|
|
||||||
<version>${project.version}</version>
|
|
||||||
</dependency>
|
|
||||||
</dependencies>
|
|
||||||
|
|
||||||
<build>
|
|
||||||
<finalName>oauth-client-cdi</finalName>
|
|
||||||
<plugins>
|
|
||||||
<plugin>
|
|
||||||
<groupId>org.jboss.as.plugins</groupId>
|
|
||||||
<artifactId>jboss-as-maven-plugin</artifactId>
|
|
||||||
<version>7.4.Final</version>
|
|
||||||
</plugin>
|
|
||||||
<plugin>
|
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
|
||||||
<artifactId>maven-deploy-plugin</artifactId>
|
|
||||||
<configuration>
|
|
||||||
<skip>true</skip>
|
|
||||||
</configuration>
|
|
||||||
</plugin>
|
|
||||||
<plugin>
|
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
|
||||||
<artifactId>maven-compiler-plugin</artifactId>
|
|
||||||
<configuration>
|
|
||||||
<source>1.6</source>
|
|
||||||
<target>1.6</target>
|
|
||||||
</configuration>
|
|
||||||
</plugin>
|
|
||||||
</plugins>
|
|
||||||
</build>
|
|
||||||
</project>
|
|
|
@ -1,57 +0,0 @@
|
||||||
package org.keycloak.example.oauth;
|
|
||||||
|
|
||||||
import java.io.FileInputStream;
|
|
||||||
import java.io.FileNotFoundException;
|
|
||||||
import java.io.InputStream;
|
|
||||||
|
|
||||||
import javax.inject.Inject;
|
|
||||||
import javax.servlet.ServletContext;
|
|
||||||
import javax.servlet.ServletContextEvent;
|
|
||||||
import javax.servlet.ServletContextListener;
|
|
||||||
import javax.servlet.annotation.WebListener;
|
|
||||||
|
|
||||||
import org.jboss.logging.Logger;
|
|
||||||
import org.keycloak.servlet.ServletOAuthClient;
|
|
||||||
import org.keycloak.servlet.ServletOAuthClientConfigLoader;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author <a href="mailto:mposolda@redhat.com">Marek Posolda</a>
|
|
||||||
*/
|
|
||||||
@WebListener
|
|
||||||
public class AppContextListener implements ServletContextListener {
|
|
||||||
|
|
||||||
private static final Logger logger = Logger.getLogger(AppContextListener.class);
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
private ServletOAuthClient oauthClient;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void contextInitialized(ServletContextEvent sce) {
|
|
||||||
ServletContext context = sce.getServletContext();
|
|
||||||
|
|
||||||
InputStream is = null;
|
|
||||||
String path = context.getInitParameter("keycloak.config.file");
|
|
||||||
if (path == null) {
|
|
||||||
is = context.getResourceAsStream("/WEB-INF/keycloak.json");
|
|
||||||
} else {
|
|
||||||
try {
|
|
||||||
is = new FileInputStream(path);
|
|
||||||
} catch (FileNotFoundException e) {
|
|
||||||
throw new RuntimeException(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ServletOAuthClientConfigLoader loader = new ServletOAuthClientConfigLoader(is);
|
|
||||||
loader.initOAuthClientConfiguration(true);
|
|
||||||
loader.configureServletOAuthClient(oauthClient);
|
|
||||||
|
|
||||||
oauthClient.start();
|
|
||||||
logger.info("OAuth client configured and started");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void contextDestroyed(ServletContextEvent sce) {
|
|
||||||
oauthClient.stop();
|
|
||||||
logger.info("OAuth client stopped");
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,41 +0,0 @@
|
||||||
package org.keycloak.example.oauth;
|
|
||||||
|
|
||||||
import javax.enterprise.context.ApplicationScoped;
|
|
||||||
import javax.enterprise.context.RequestScoped;
|
|
||||||
import javax.enterprise.inject.Produces;
|
|
||||||
import javax.faces.context.FacesContext;
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
|
||||||
import javax.servlet.http.HttpServletResponse;
|
|
||||||
|
|
||||||
import org.keycloak.servlet.ServletOAuthClient;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author <a href="mailto:mposolda@redhat.com">Marek Posolda</a>
|
|
||||||
*/
|
|
||||||
public class CDIResourcesProducer {
|
|
||||||
|
|
||||||
@Produces
|
|
||||||
@RequestScoped
|
|
||||||
public FacesContext produceFacesContext() {
|
|
||||||
return FacesContext.getCurrentInstance();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Produces
|
|
||||||
@RequestScoped
|
|
||||||
@ServletRequestQualifier
|
|
||||||
public HttpServletRequest produceServletRequest() {
|
|
||||||
return (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Produces
|
|
||||||
@RequestScoped
|
|
||||||
public HttpServletResponse produceServletResponse() {
|
|
||||||
return (HttpServletResponse)FacesContext.getCurrentInstance().getExternalContext().getResponse();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Produces
|
|
||||||
@ApplicationScoped
|
|
||||||
public ServletOAuthClient produceOAuthClient() {
|
|
||||||
return new ServletOAuthClient();
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,104 +0,0 @@
|
||||||
package org.keycloak.example.oauth;
|
|
||||||
|
|
||||||
import org.apache.http.HttpEntity;
|
|
||||||
import org.apache.http.HttpResponse;
|
|
||||||
import org.apache.http.client.HttpClient;
|
|
||||||
import org.apache.http.client.methods.HttpGet;
|
|
||||||
import org.jboss.logging.Logger;
|
|
||||||
import org.keycloak.adapters.TokenGrantRequest;
|
|
||||||
import org.keycloak.servlet.ServletOAuthClient;
|
|
||||||
import org.keycloak.util.JsonSerialization;
|
|
||||||
|
|
||||||
import javax.enterprise.context.ApplicationScoped;
|
|
||||||
import javax.faces.application.FacesMessage;
|
|
||||||
import javax.faces.context.FacesContext;
|
|
||||||
import javax.inject.Inject;
|
|
||||||
import javax.inject.Named;
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
|
||||||
import javax.servlet.http.HttpServletResponse;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.InputStream;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
|
|
||||||
* @author <a href="mailto:mposolda@redhat.com">Marek Posolda</a>
|
|
||||||
* @version $Revision: 1 $
|
|
||||||
*/
|
|
||||||
@ApplicationScoped
|
|
||||||
@Named("databaseClient")
|
|
||||||
public class DatabaseClient {
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
@ServletRequestQualifier
|
|
||||||
private HttpServletRequest request;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
private HttpServletResponse response;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
private FacesContext facesContext;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
private ServletOAuthClient oauthClient;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
private UserData userData;
|
|
||||||
|
|
||||||
private static final Logger logger = Logger.getLogger(DatabaseClient.class);
|
|
||||||
|
|
||||||
public void retrieveAccessToken() {
|
|
||||||
try {
|
|
||||||
oauthClient.redirectRelative("client.jsf", request, response);
|
|
||||||
} catch (IOException e) {
|
|
||||||
throw new RuntimeException(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static class TypedList extends ArrayList<String> {}
|
|
||||||
|
|
||||||
public void sendCustomersRequest() {
|
|
||||||
List<String> customers = sendRequestToDBApplication("http://localhost:8080/database/customers");
|
|
||||||
userData.setCustomers(customers);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void sendProductsRequest() {
|
|
||||||
List<String> products = sendRequestToDBApplication("http://localhost:8080/database/products");
|
|
||||||
userData.setProducts(products);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected List<String> sendRequestToDBApplication(String dbUri) {
|
|
||||||
HttpClient client = oauthClient.getClient();
|
|
||||||
HttpGet get = new HttpGet(dbUri);
|
|
||||||
try {
|
|
||||||
|
|
||||||
if (userData.isHasAccessToken()) {
|
|
||||||
get.addHeader("Authorization", "Bearer " + userData.getAccessToken());
|
|
||||||
}
|
|
||||||
|
|
||||||
HttpResponse response = client.execute(get);
|
|
||||||
switch (response.getStatusLine().getStatusCode()) {
|
|
||||||
case 200: HttpEntity entity = response.getEntity();
|
|
||||||
InputStream is = entity.getContent();
|
|
||||||
try {
|
|
||||||
return JsonSerialization.readValue(is, TypedList.class);
|
|
||||||
} finally {
|
|
||||||
is.close();
|
|
||||||
}
|
|
||||||
case 401: facesContext.addMessage(null, new FacesMessage("Status: 401. Request not authenticated! You need to retrieve access token first."));
|
|
||||||
break;
|
|
||||||
case 403: facesContext.addMessage(null, new FacesMessage("Status: 403. Access token has insufficient privileges"));
|
|
||||||
break;
|
|
||||||
default: facesContext.addMessage(null, new FacesMessage("Status: " + response.getStatusLine() + ". Not able to retrieve data. See log for details"));
|
|
||||||
logger.warn("Error occured. Status: " + response.getStatusLine());
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
} catch (IOException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
facesContext.addMessage(null, new FacesMessage("Unknown error. See log for details"));
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,34 +0,0 @@
|
||||||
package org.keycloak.example.oauth;
|
|
||||||
|
|
||||||
import javax.enterprise.context.RequestScoped;
|
|
||||||
import javax.faces.application.FacesMessage;
|
|
||||||
import javax.faces.context.FacesContext;
|
|
||||||
import javax.inject.Inject;
|
|
||||||
import javax.inject.Named;
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This is needed because Faces context is not available in HTTP filters
|
|
||||||
*
|
|
||||||
* @author <a href="mailto:mposolda@redhat.com">Marek Posolda</a>
|
|
||||||
*/
|
|
||||||
@RequestScoped
|
|
||||||
@Named("messagesChecker")
|
|
||||||
public class MessagesChecker {
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
@ServletRequestQualifier
|
|
||||||
private HttpServletRequest request;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
private FacesContext facesContext;
|
|
||||||
|
|
||||||
public String getCheckMessage() {
|
|
||||||
String oauthError = (String)request.getAttribute(RefreshTokenFilter.OAUTH_ERROR_ATTR);
|
|
||||||
if (oauthError != null) {
|
|
||||||
facesContext.addMessage(null, new FacesMessage("OAuth error occured: " + oauthError));
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,62 +0,0 @@
|
||||||
package org.keycloak.example.oauth;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import javax.inject.Inject;
|
|
||||||
import javax.servlet.Filter;
|
|
||||||
import javax.servlet.FilterChain;
|
|
||||||
import javax.servlet.FilterConfig;
|
|
||||||
import javax.servlet.ServletException;
|
|
||||||
import javax.servlet.ServletRequest;
|
|
||||||
import javax.servlet.ServletResponse;
|
|
||||||
import javax.servlet.annotation.WebFilter;
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
|
||||||
import javax.servlet.http.HttpServletResponse;
|
|
||||||
|
|
||||||
import org.keycloak.adapters.TokenGrantRequest;
|
|
||||||
import org.keycloak.servlet.ServletOAuthClient;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author <a href="mailto:mposolda@redhat.com">Marek Posolda</a>
|
|
||||||
*/
|
|
||||||
@WebFilter(value = "/client.jsf")
|
|
||||||
public class RefreshTokenFilter implements Filter {
|
|
||||||
|
|
||||||
public static final String OAUTH_ERROR_ATTR = "oauthErrorAttr";
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
private ServletOAuthClient oauthClient;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
private UserData userData;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void init(FilterConfig filterConfig) throws ServletException {
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException {
|
|
||||||
HttpServletRequest request = (HttpServletRequest)req;
|
|
||||||
HttpServletResponse response = (HttpServletResponse)resp;
|
|
||||||
Map<String, String[]> reqParams = request.getParameterMap();
|
|
||||||
|
|
||||||
if (reqParams.containsKey("code")) {
|
|
||||||
try {
|
|
||||||
String accessToken = oauthClient.getBearerToken(request);
|
|
||||||
userData.setAccessToken(accessToken);
|
|
||||||
} catch (TokenGrantRequest.HttpFailure e) {
|
|
||||||
throw new ServletException(e);
|
|
||||||
}
|
|
||||||
} else if (reqParams.containsKey("error")) {
|
|
||||||
String oauthError = reqParams.get("error")[0];
|
|
||||||
request.setAttribute(OAUTH_ERROR_ATTR, oauthError);
|
|
||||||
}
|
|
||||||
|
|
||||||
chain.doFilter(request, response);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void destroy() {
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,19 +0,0 @@
|
||||||
package org.keycloak.example.oauth;
|
|
||||||
|
|
||||||
import java.lang.annotation.ElementType;
|
|
||||||
import java.lang.annotation.Retention;
|
|
||||||
import java.lang.annotation.RetentionPolicy;
|
|
||||||
import java.lang.annotation.Target;
|
|
||||||
|
|
||||||
import javax.inject.Qualifier;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This is needed to have same code working in AS7 and Wildfly. In Wildfly is HttpServletRequest injected automatically, in AS7 it's not
|
|
||||||
*
|
|
||||||
* @author <a href="mailto:mposolda@redhat.com">Marek Posolda</a>
|
|
||||||
*/
|
|
||||||
@Qualifier
|
|
||||||
@Retention(RetentionPolicy.RUNTIME)
|
|
||||||
@Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER })
|
|
||||||
public @interface ServletRequestQualifier {
|
|
||||||
}
|
|
|
@ -1,63 +0,0 @@
|
||||||
package org.keycloak.example.oauth;
|
|
||||||
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import javax.enterprise.context.SessionScoped;
|
|
||||||
import javax.inject.Named;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author <a href="mailto:mposolda@redhat.com">Marek Posolda</a>
|
|
||||||
*/
|
|
||||||
@SessionScoped
|
|
||||||
@Named("userData")
|
|
||||||
public class UserData implements Serializable {
|
|
||||||
|
|
||||||
private String accessToken;
|
|
||||||
private List<String> products;
|
|
||||||
private List<String> customers;
|
|
||||||
|
|
||||||
public String getAccessToken() {
|
|
||||||
return accessToken;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setAccessToken(String accessToken) {
|
|
||||||
this.accessToken = accessToken;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isHasAccessToken() {
|
|
||||||
return accessToken != null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getAccessTokenAvailabilityMessage() {
|
|
||||||
StringBuilder builder = new StringBuilder("Access token ");
|
|
||||||
if (!isHasAccessToken()) {
|
|
||||||
builder.append("not ");
|
|
||||||
}
|
|
||||||
return builder.append("available!").toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<String> getProducts() {
|
|
||||||
return products;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setProducts(List<String> products) {
|
|
||||||
this.products = products;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isHasProducts() {
|
|
||||||
return products != null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<String> getCustomers() {
|
|
||||||
return customers;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setCustomers(List<String> customers) {
|
|
||||||
this.customers = customers;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isHasCustomers() {
|
|
||||||
return customers != null;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,23 +0,0 @@
|
||||||
<!--
|
|
||||||
JBoss, Home of Professional Open Source
|
|
||||||
Copyright 2013, Red Hat, Inc. and/or its affiliates, and individual
|
|
||||||
contributors by the @authors tag. See the copyright.txt in the
|
|
||||||
distribution for a full listing of individual contributors.
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
-->
|
|
||||||
<!-- Marker file indicating CDI should be enabled -->
|
|
||||||
<beans xmlns="http://java.sun.com/xml/ns/javaee"
|
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
||||||
xsi:schemaLocation="
|
|
||||||
http://java.sun.com/xml/ns/javaee
|
|
||||||
http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
|
|
||||||
</beans>
|
|
|
@ -1,23 +0,0 @@
|
||||||
<?xml version="1.0"?>
|
|
||||||
<!--
|
|
||||||
JBoss, Home of Professional Open Source
|
|
||||||
Copyright 2013, Red Hat, Inc. and/or its affiliates, and individual
|
|
||||||
contributors by the @authors tag. See the copyright.txt in the
|
|
||||||
distribution for a full listing of individual contributors.
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
-->
|
|
||||||
<!-- Marker file indicating JSF should be enabled -->
|
|
||||||
<faces-config version="2.0" xmlns="http://java.sun.com/xml/ns/javaee"
|
|
||||||
xmlns:xi="http://www.w3.org/2001/XInclude"
|
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">
|
|
||||||
|
|
||||||
</faces-config>
|
|
|
@ -1,7 +0,0 @@
|
||||||
<jboss-deployment-structure>
|
|
||||||
<deployment>
|
|
||||||
<!-- This allows you to define additional dependencies, it is the same as using the Dependencies: manifest attribute -->
|
|
||||||
<dependencies>
|
|
||||||
</dependencies>
|
|
||||||
</deployment>
|
|
||||||
</jboss-deployment-structure>
|
|
|
@ -1,20 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
|
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
||||||
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
|
|
||||||
version="3.0">
|
|
||||||
|
|
||||||
<module-name>oauth-client-cdi</module-name>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
<security-constraint>
|
|
||||||
<web-resource-collection>
|
|
||||||
<url-pattern>/*</url-pattern>
|
|
||||||
</web-resource-collection>
|
|
||||||
<user-data-constraint>
|
|
||||||
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
|
|
||||||
</user-data-constraint>
|
|
||||||
</security-constraint>
|
|
||||||
-->
|
|
||||||
|
|
||||||
</web-app>
|
|
|
@ -1,37 +0,0 @@
|
||||||
<!DOCTYPE html
|
|
||||||
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html"
|
|
||||||
xmlns:f="http://java.sun.com/jsf/core">
|
|
||||||
<body>
|
|
||||||
<h1>Third Party App That Pulls Data Using OAuth</h1>
|
|
||||||
<h:form>
|
|
||||||
#{userData.accessTokenAvailabilityMessage}
|
|
||||||
<br />
|
|
||||||
<h:commandButton id="retrieve_token" value="Retrieve/refresh access token" action="#{databaseClient.retrieveAccessToken}"/>
|
|
||||||
<h:commandButton id="products_request" value="Load products list" action="#{databaseClient.sendProductsRequest}"/>
|
|
||||||
<h:commandButton id="customers_request" value="Load customers list" action="#{databaseClient.sendCustomersRequest}"/>
|
|
||||||
</h:form>
|
|
||||||
|
|
||||||
<ui:fragment rendered="#{userData.hasProducts}">
|
|
||||||
<hr />
|
|
||||||
<h3>Products data available</h3>
|
|
||||||
<ui:repeat value="#{userData.products}" var="product">
|
|
||||||
#{product}<br/>
|
|
||||||
</ui:repeat>
|
|
||||||
</ui:fragment>
|
|
||||||
|
|
||||||
<ui:fragment rendered="#{userData.hasCustomers}">
|
|
||||||
<hr />
|
|
||||||
<h3>Customers data available</h3>
|
|
||||||
<ui:repeat value="#{userData.customers}" var="customer">
|
|
||||||
#{customer}<br/>
|
|
||||||
</ui:repeat>
|
|
||||||
</ui:fragment>
|
|
||||||
|
|
||||||
<div style="color: red">
|
|
||||||
#{messagesChecker.checkMessage}
|
|
||||||
<h:messages globalOnly="true"/>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,5 +0,0 @@
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta http-equiv="Refresh" content="0; URL=client.jsf">
|
|
||||||
</head>
|
|
||||||
</html>
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue