2014-01-07 19:37:50 +00:00
|
|
|
Login, Distributed SSO, Distributed Logout, and Oauth Token Grant Wildfly Examples
|
2013-07-29 14:36:20 +00:00
|
|
|
===================================
|
2014-01-07 19:37:50 +00:00
|
|
|
The following examples requires JBoss AS 7.1.1 or EAP 6.x. Here's the highlights of the examples
|
2013-07-29 14:36:20 +00:00
|
|
|
* 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
|
|
|
|
|
2014-01-07 19:37:50 +00:00
|
|
|
There are multiple WAR projects. These all will run on the same jboss instance, but pretend each one is running on a different
|
2013-07-29 14:36:20 +00:00
|
|
|
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.
|
|
|
|
|
2014-01-07 19:37:50 +00:00
|
|
|
_This demo is meant to run on the same server instance as the Keycloak Server!_
|
2013-07-29 14:36:20 +00:00
|
|
|
|
2014-01-07 19:37:50 +00:00
|
|
|
|
|
|
|
Step 1: Make sure you've set up the Keycloak Server and Adapter
|
2013-07-29 14:36:20 +00:00
|
|
|
--------------------------------------
|
2014-01-07 19:37:50 +00:00
|
|
|
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
|
2013-07-29 14:36:20 +00:00
|
|
|
|
|
|
|
|
2014-01-07 19:37:50 +00:00
|
|
|
|
|
|
|
Step 2: Boot Keycloak Server
|
2013-07-29 14:36:20 +00:00
|
|
|
---------------------------------------
|
2014-01-07 19:37:50 +00:00
|
|
|
Where you go to start up the Keycloak Server depends on which distro you installed.
|
|
|
|
|
|
|
|
$ cd ${jboss.home}/bin
|
|
|
|
$ ./standalone.sh
|
2013-07-29 14:36:20 +00:00
|
|
|
|
2014-01-07 19:37:50 +00:00
|
|
|
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.
|
|
|
|
|
2014-01-13 22:07:36 +00:00
|
|
|
[http://localhost:8080/auth/admin/index.html#/create/realm](http://localhost:8080/auth/admin/index.html#/create/realm)
|
2014-01-07 19:37:50 +00:00
|
|
|
|
|
|
|
Import the testrealm.json file that is in the as7-eap6-demo/ example directory.
|
|
|
|
|
|
|
|
|
|
|
|
Step 4: Build and deploy
|
2013-07-29 14:36:20 +00:00
|
|
|
---------------------------------------
|
|
|
|
next you must build and deploy
|
|
|
|
|
|
|
|
1. cd as7-eap-demo
|
|
|
|
2. mvn clean install
|
|
|
|
3. mvn jboss-as:deploy
|
|
|
|
|
2014-01-07 19:37:50 +00:00
|
|
|
Step 5: Login and Observe Apps
|
2013-07-29 14:36:20 +00:00
|
|
|
---------------------------------------
|
|
|
|
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.
|
|
|
|
|
2014-01-07 19:37:50 +00:00
|
|
|
Step 6: Traditional OAuth2 Example
|
2013-07-29 14:36:20 +00:00
|
|
|
----------------------------------
|
|
|
|
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.
|
|
|
|
|
2013-10-01 14:17:15 +00:00
|
|
|
Admin Console
|
|
|
|
==========================
|
|
|
|
|
2014-01-07 19:37:50 +00:00
|
|
|
1. Login
|
2013-10-01 14:17:15 +00:00
|
|
|
|
|
|
|
Login:
|
2014-01-13 22:07:36 +00:00
|
|
|
[http://localhost:8080/auth/rest/admin/login](http://localhost:8080/auth/rest/admin/login)
|
2013-10-01 14:17:15 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|