fix demo doc

This commit is contained in:
Bill Burke 2014-02-14 08:42:44 -05:00
parent 0cdd5e857e
commit 87ec1e53bf
4 changed files with 93 additions and 114 deletions

View file

@ -17,8 +17,11 @@
<exclude name="**/WEB-INF/keycloak.json"/> <exclude name="**/WEB-INF/keycloak.json"/>
<exclude name="**/target/**"/> <exclude name="**/target/**"/>
<exclude name="**/*.iml"/> <exclude name="**/*.iml"/>
<exclude name="**/README.md"/>
<exclude name="**/subsystem-config.xml"/>
</fileset> </fileset>
</copy> </copy>
<move file="target/examples/unconfigured-demo/README.md.unconfigured" tofile="target/examples/unconfigured-demo/README.md"/>
<move file="target/examples/unconfigured-demo/customer-app/src/main/webapp/WEB-INF/web.xml.unconfigured" tofile="target/examples/unconfigured-demo/customer-app/src/main/webapp/WEB-INF/web.xml"/> <move file="target/examples/unconfigured-demo/customer-app/src/main/webapp/WEB-INF/web.xml.unconfigured" tofile="target/examples/unconfigured-demo/customer-app/src/main/webapp/WEB-INF/web.xml"/>
<move file="target/examples/unconfigured-demo/product-app/src/main/webapp/WEB-INF/web.xml.unconfigured" tofile="target/examples/unconfigured-demo/product-app/src/main/webapp/WEB-INF/web.xml"/> <move file="target/examples/unconfigured-demo/product-app/src/main/webapp/WEB-INF/web.xml.unconfigured" tofile="target/examples/unconfigured-demo/product-app/src/main/webapp/WEB-INF/web.xml"/>
<move file="target/examples/unconfigured-demo/database-service/src/main/webapp/WEB-INF/web.xml.unconfigured" tofile="target/examples/unconfigured-demo/database-service/src/main/webapp/WEB-INF/web.xml"/> <move file="target/examples/unconfigured-demo/database-service/src/main/webapp/WEB-INF/web.xml.unconfigured" tofile="target/examples/unconfigured-demo/database-service/src/main/webapp/WEB-INF/web.xml"/>

View file

@ -1,6 +1,6 @@
Login, Distributed SSO, Distributed Logout, and OAuth Token Grant Wildfly Examples Login, Distributed SSO, Distributed Logout, and OAuth Token Grant Examples
=================================== ===================================
The following examples requires Wildfly 8.0.0. Here's the highlights of the examples The following examples requires Wildfly 8.0.0, JBoss EAP 6.x, or JBoss AS 7.1.1. Here's the highlights of the examples
* Delegating authentication of a web app to the remote authentication server via OAuth 2 protocols * Delegating authentication of a web app to the remote authentication server via OAuth 2 protocols
* Distributed Single-Sign-On and Single-Logout * Distributed Single-Sign-On and Single-Logout
* Transferring identity and role mappings via a special bearer token (Skeleton Key Token). * Transferring identity and role mappings via a special bearer token (Skeleton Key Token).
@ -13,6 +13,7 @@ machine on the network or Internet.
* **product-app** A WAR application that does remote login using OAuth2 browser redirects with the auth server * **product-app** A WAR application that does remote login using OAuth2 browser redirects with the auth server
* **database-service** JAX-RS services authenticated by bearer tokens only. The customer and product app invoke on it to get data * **database-service** JAX-RS services authenticated by bearer tokens only. The customer and product app invoke on it to get data
* **third-party** Simple WAR that obtain a bearer token using OAuth2 using browser redirects to the auth-server. * **third-party** Simple WAR that obtain a bearer token using OAuth2 using browser redirects to the auth-server.
* **third-party-cdi** Simple CDI/JSF WAR that obtain a bearer token using OAuth2 using browser redirects to the auth-server.
The UI of each of these applications is very crude and exists just to show our OAuth2 implementation in action. The UI of each of these applications is very crude and exists just to show our OAuth2 implementation in action.
@ -21,20 +22,64 @@ _This demo is meant to run on the same server instance as the Keycloak Server!_
Step 1: Make sure you've set up the Keycloak Server Step 1: Make sure you've set up the Keycloak Server
-------------------------------------- --------------------------------------
If you've downloaded the Keycloak Appliance Distribution, there is already a Wildfly distro all set up for you. This The Keycloak Appliance Distribution comes with a preconfigured Keycloak server (based on Wildfly). You can use it out of
Wildfly distro has the adapter jboss modules all installed as well as the Keycloak Server all set up. the box to run these demos. So, if you're using this, you can head to Step 2.
If you want to install Keycloak Server and run the demo on an existing Wildfly instance: Alternatively, you can install the Keycloak Server onto any JBoss AS 7.1.1, EAP 6.x, or Wildfly 8.x server, but there is
a few steps you must follow.
Obtain latest keycloak-war-dist-all.zip. This distro is used to install keycloak onto an existing JBoss installation Obtain latest keycloak-war-dist-all.zip. This distro is used to install Keycloak onto an existing JBoss installation.
This installs the server.
$ cd ${wildfly.home}/standalone $ cd ${wildfly.jboss.home}/standalone
$ cp -r ${keycloak-war-dist-all}/deployments . $ cp -r ${keycloak-war-dist-all}/deployments .
To install the adapter: To be able to run the demos you also need to install the Keycloak client adapter. For Wildfly:
$ cd ${wildfly.home}
$ unzip ${keycloak-war-dist-all}/adapters/keycloak-wildfly-adapter-dist.zip
For JBoss EAP 6.x
$ cd ${eap.home}
$ unzip ${keycloak-war-dist-all}/adapters/keycloak-eap6-adapter-dist.zip
For JBoss AS 7.1.1:
$ cd ${as7.home}
$ unzip ${keycloak-war-dist-all}/adapters/keycloak-as7-adapter-dist.zip
Unzipping the adapter ZIP only installs the JAR files. You must also add the Keycloak Subsystem to the server's
configuration (standalone/configuration/standalone.xml).
For Wildfly:
<server xmlns="urn:jboss:domain:1.4">
<extensions>
<extension module="org.keycloak.keycloak-wildfly-subsystem"/>
...
</extensions>
<profile>
<subsystem xmlns="urn:jboss:domain:keycloak:1.0"/>
...
</profile>
For JBoss 7.1.1 and EAP 6.x:
<server xmlns="urn:jboss:domain:1.4">
<extensions>
<extension module="org.keycloak.keycloak-as7-subsystem"/>
...
</extensions>
<profile>
<subsystem xmlns="urn:jboss:domain:keycloak:1.0"/>
...
</profile>
$ cd ${jboss.home}
$ unzip ${keycloak-war-dist-al}/adapters/keycloak-wildfly-adapter-dist.zip
Step 2: Boot Keycloak Server Step 2: Boot Keycloak Server
--------------------------------------- ---------------------------------------
@ -44,8 +89,8 @@ From appliance:
$ cd keycloak/bin $ cd keycloak/bin
$ ./standalone.sh $ ./standalone.sh
From existing Wildfly distro From existing Wildfly/EAP6/AS7 distro
$ cd ${wildfly.home} $ cd ${wildfly.jboss.home}/bin
$ ./standalone.sh $ ./standalone.sh
Step 3: Import the Test Realm Step 3: Import the Test Realm
@ -56,17 +101,38 @@ create a new admin password before you can go to the create realm page.
[http://localhost:8080/auth/admin/index.html#/create/realm](http://localhost:8080/auth/admin/index.html#/create/realm) [http://localhost:8080/auth/admin/index.html#/create/realm](http://localhost:8080/auth/admin/index.html#/create/realm)
Import the testrealm.json file that is in the wildfly-demo/ example directory. Import the testrealm.json file that is in the preconfigured-demo/ example directory.
Step 4: Build and deploy Step 4: Build and deploy
--------------------------------------- ---------------------------------------
next you must build and deploy next you must build and deploy
1. cd wildfly-demo 1. cd preconfigured-demo
2. mvn clean install 2. mvn clean install
3. mvn jboss-as:deploy 3. mvn jboss-as:deploy
Please note that jboss-as:deploy may fail on Wildfly distributions. This is because Wildfly 8.0.0.Final has turned
off a management interface. You will hae to add this back in order to run the build. Edit standalone/configuration/standalone.xml
Add the native-itnerface to <management> element's <management-interfaces>:
<management>
<management-interfaces>
<native-interface security-realm="ManagementRealm">
<socket-binding native="management-native"/>
</native-interface>
...
</management-interfaces>
</management>
Then add a socket port mapping for the management interface :
<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
<socket-binding name="management-native" interface="management" port="${jboss.management.native.port:9999}"/>
Step 5: Login and Observe Apps Step 5: Login and Observe Apps
--------------------------------------- ---------------------------------------
Try going to the customer app and view customer data: Try going to the customer app and view customer data:

View file

@ -1,100 +0,0 @@
Login, Distributed SSO, Distributed Logout, and Oauth Token Grant Wildfly Examples
===================================
The following examples requires JBoss AS 7.1.1 or EAP 6.x. Here's the highlights of the examples
* Delegating authentication of a web app to the remote authentication server via OAuth 2 protocols
* Distributed Single-Sign-On and Single-Logout
* Transferring identity and role mappings via a special bearer token (Skeleton Key Token).
* Bearer token authentication and authorization of JAX-RS services
* Obtaining bearer tokens via the OAuth2 protocol
There are multiple WAR projects. These all will run on the same jboss instance, but pretend each one is running on a different
machine on the network or Internet.
* **customer-app** A WAR applications that does remote login using OAUTH2 browser redirects with the auth server
* **product-app** A WAR applications that does remote login using OAUTH2 browser redirects with the auth server
* **database-service** JAX-RS services authenticated by bearer tokens only. The customer and product app invoke on it
to get data
* **third-party** Simple WAR that obtain a bearer token using OAuth2 using browser redirects to the auth-server.
The UI of each of these applications is very crude and exists just to show our OAuth2 implementation in action.
_This demo is meant to run on the same server instance as the Keycloak Server!_
Step 1: Make sure you've set up the Keycloak Server and Adapter
--------------------------------------
Obtain latest keycloak-war-dist-all.zip. This distro is used to install keycloak onto an existing JBoss installation
$ cd ${jboss.home}/standalone
$ cp -r ${keycloak-war-dist-all}/deployments .
To install the adapter if running JBoss 7.1.1
$ cd ${jboss.home}
$ unzip ${keycloak-war-dist-al}/adapters/keycloak-as7-adapter-dist.zip
To install the adapter if running on EAP 6.x
$ cd ${jboss.home}
$ unzip ${keycloak-war-dist-all}/adapters/keycloak-as7-adapter-dist.zip
Step 2: Boot Keycloak Server
---------------------------------------
Where you go to start up the Keycloak Server depends on which distro you installed.
$ cd ${jboss.home}/bin
$ ./standalone.sh
Step 3: Import the Test Realm
---------------------------------------
Next thing you have to do is import the test realm for the demo. Clicking on the below link will bring you to the
create realm page in the admin UI. The username/password is admin/admin to login in. Keycloak will ask you to
create a new password admin password before you can go to the create realm page.
[http://localhost:8080/auth/admin/index.html#/create/realm](http://localhost:8080/auth/admin/index.html#/create/realm)
Import the testrealm.json file that is in the as7-eap6-demo/ example directory.
Step 4: Build and deploy
---------------------------------------
next you must build and deploy
1. cd as7-eap-demo
2. mvn clean install
3. mvn jboss-as:deploy
Step 5: Login and Observe Apps
---------------------------------------
Try going to the customer app and viewing customer data:
[http://localhost:8080/customer-portal/customers/view.jsp](http://localhost:8080/customer-portal/customers/view.jsp)
This should take you to the auth-server login screen. Enter username: bburke@redhat.com and password: password.
If you click on the products link, you'll be take to the products app and show a product listing. The redirects
are still happening, but the auth-server knows you are already logged in so the login is bypassed.
If you click on the logout link of either of the product or customer app, you'll be logged out of all the applications.
Step 6: Traditional OAuth2 Example
----------------------------------
The customer and product apps are logins. The third-party app is the traditional OAuth2 usecase of a client wanting
to get permission to access a user's data. To run this example
[http://localhost:8080/oauth-client](http://localhost:8080/oauth-client)
If you area already logged in, you will not be asked for a username and password, but you will be redirected to
an oauth grant page. This page asks you if you want to grant certain permissions to the third-part app.
Admin Console
==========================
1. Login
Login:
[http://localhost:8080/auth/rest/admin/login](http://localhost:8080/auth/rest/admin/login)

View file

@ -0,0 +1,10 @@
Unconfigured Examples
===================================
This set of projects contains a stripped down version of the demo described in preconfigured-demo. All keycloak specific
configuration has been removed. Use this project in conjunction with the online screencast tutorials at
[http://keycloak.org/docs](http://keycloak.org/docs).