From 6146dd48f7e63640b833d832402e100deada41c1 Mon Sep 17 00:00:00 2001 From: Stian Thorgersen Date: Mon, 13 Jan 2014 13:56:05 +0000 Subject: [PATCH 1/4] Some minor changes to WildFly example README.md --- examples/wildfly-demo/README.md | 39 +++++++++++++++------------------ 1 file changed, 18 insertions(+), 21 deletions(-) diff --git a/examples/wildfly-demo/README.md b/examples/wildfly-demo/README.md index 48a4781c27..6ebc17a542 100755 --- a/examples/wildfly-demo/README.md +++ b/examples/wildfly-demo/README.md @@ -1,4 +1,4 @@ -Login, Distributed SSO, Distributed Logout, and Oauth Token Grant Wildfly Examples +Login, Distributed SSO, Distributed Logout, and OAuth Token Grant Wildfly Examples =================================== The following examples requires Wildfly 8.0.0. Here's the highlights of the examples * Delegating authentication of a web app to the remote authentication server via OAuth 2 protocols @@ -7,12 +7,11 @@ The following examples requires Wildfly 8.0.0. Here's the highlights of the exa * 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 +There are multiple WAR projects. These will all run on the same WildFly 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 +* **customer-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 * **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. @@ -23,30 +22,31 @@ _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 -------------------------------------- If you've downloaded the Keycloak Appliance Distribution, there is already a Wildfly distro all set up for you. This -Wildfly distro has the adapter jboss modules all installed as well as the keycloak server all set up. +Wildfly distro has the adapter jboss modules all installed as well as the Keycloak Server all set up. If you want to install Keycloak Server and run the demo on an existing Wildfly instance: 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 . + $ cd ${jboss.home}/standalone + $ cp -r ${keycloak-war-dist-all}/deployments . To install the adapter: -$ cd ${jboss.home} -$ unzip ${keycloak-war-dist-al}/adapters/keycloak-wildfly-adapter-dist.zip + + $ cd ${jboss.home} + $ unzip ${keycloak-war-dist-al}/adapters/keycloak-wildfly-adapter-dist.zip Step 2: Boot Keycloak Server --------------------------------------- Where you go to start up the Keycloak Server depends on which distro you installed. -$ ./standalone.sh + $ ./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. +create realm page in the Admin UI. The username/password is admin/admin to login in. Keycloak will ask you to +create a new admin password before you can go to the create realm page. [http://localhost:8080/auth-server/admin/index.html#/create/realm](http://localhost:8080/auth-server/admin/index.html#/create/realm) @@ -63,13 +63,13 @@ next you must build and deploy Step 5: Login and Observe Apps --------------------------------------- -Try going to the customer app and viewing customer data: +Try going to the customer app and view 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 +If you click on the products link, you'll be taken 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. @@ -77,7 +77,7 @@ If you click on the logout link of either of the product or customer app, you'll 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 +to get permission to access a user's data. To run this example open [http://localhost:8080/oauth-client](http://localhost:8080/oauth-client) @@ -87,10 +87,7 @@ an oauth grant page. This page asks you if you want to grant certain permission Admin Console ========================== -1. Login - -Login: -[http://localhost:8080/auth-server/rest/saas/login](http://localhost:8080/auth-server/rest/saas/login) +[http://localhost:8080/auth-server/admin/index.html](http://localhost:8080/auth-server/admin/index.html) From 8ef194a205879675da437e1b14f6822b960f578e Mon Sep 17 00:00:00 2001 From: Stian Thorgersen Date: Mon, 13 Jan 2014 15:04:53 +0000 Subject: [PATCH 2/4] Added Keycloak welcome page --- distribution/appliance-dist/assembly.xml | 8 +++ server/src/main/webapp/index.html | 50 ++++++++++++++++ server/src/main/webapp/jboss_community.png | Bin 0 -> 2731 bytes server/src/main/webapp/keycloak.css | 65 +++++++++++++++++++++ server/src/main/webapp/keycloak_logo.png | Bin 0 -> 22500 bytes 5 files changed, 123 insertions(+) create mode 100644 server/src/main/webapp/index.html create mode 100644 server/src/main/webapp/jboss_community.png create mode 100644 server/src/main/webapp/keycloak.css create mode 100644 server/src/main/webapp/keycloak_logo.png diff --git a/distribution/appliance-dist/assembly.xml b/distribution/appliance-dist/assembly.xml index 329ff2ae50..8f6e772c3a 100755 --- a/distribution/appliance-dist/assembly.xml +++ b/distribution/appliance-dist/assembly.xml @@ -16,6 +16,7 @@ keycloak **/*.sh + welcome-content/* @@ -34,6 +35,13 @@ ${project.build.directory}/unpacked/adapter keycloak + + ${project.build.directory}/unpacked/deployments/auth-server.war + keycloak/welcome-content + + *.* + + diff --git a/server/src/main/webapp/index.html b/server/src/main/webapp/index.html new file mode 100644 index 0000000000..805dc19f27 --- /dev/null +++ b/server/src/main/webapp/index.html @@ -0,0 +1,50 @@ + + + + + + Welcome to WildFly Application Server 8 + + + + + +
+
+ +

Welcome to Keycloak

+ +

Your Keycloak is running.

+ +

Documentation | Administration Console

+ +

Keycloak Project | + Mailing List | + Report an issue

+

JBoss and JBoss Community

+
+
+ + diff --git a/server/src/main/webapp/jboss_community.png b/server/src/main/webapp/jboss_community.png new file mode 100644 index 0000000000000000000000000000000000000000..946e8f93c7fb07641f51326b682602d82951cf05 GIT binary patch literal 2731 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 literal 0 HcmV?d00001 From f2c0eed8f29493ddc959e6466473f19245aa36d0 Mon Sep 17 00:00:00 2001 From: Stian Thorgersen Date: Mon, 13 Jan 2014 15:06:03 +0000 Subject: [PATCH 3/4] Minor tweaks to login. Display 'Keycloak Administration' instead of 'Keycloak' when login to admin console. Add link to powered by Keycloak --- .../src/main/java/org/keycloak/forms/RealmBean.java | 2 +- .../main/java/org/keycloak/forms/TemplateBean.java | 12 +++--------- .../resources/forms/theme/default/template-login.ftl | 2 +- 3 files changed, 5 insertions(+), 11 deletions(-) diff --git a/forms/src/main/java/org/keycloak/forms/RealmBean.java b/forms/src/main/java/org/keycloak/forms/RealmBean.java index 6eeabab0f5..322580ca9b 100755 --- a/forms/src/main/java/org/keycloak/forms/RealmBean.java +++ b/forms/src/main/java/org/keycloak/forms/RealmBean.java @@ -44,7 +44,7 @@ public class RealmBean { } public String getName() { - return saas ? "Keycloak" : realm.getName(); + return realm.getName(); } public RealmModel getRealm() { diff --git a/forms/src/main/java/org/keycloak/forms/TemplateBean.java b/forms/src/main/java/org/keycloak/forms/TemplateBean.java index 5bdea9c56d..211717c449 100644 --- a/forms/src/main/java/org/keycloak/forms/TemplateBean.java +++ b/forms/src/main/java/org/keycloak/forms/TemplateBean.java @@ -51,15 +51,9 @@ public class TemplateBean { themeConfig.put("styles", themeUrl + "/styles.css"); - // TODO move this into CSS - if (realm.isSaas()) { - themeConfig.put("logo", themeUrl + "/img/red-hat-logo.png"); - themeConfig.put("background", themeUrl + "/img/login-screen-background.jpg"); - themeConfig.put("displayPoweredBy", false); - } else { - themeConfig.put("background", themeUrl + "/img/customer-login-screen-bg2.jpg"); - themeConfig.put("displayPoweredBy", true); - } + themeConfig.put("logo", themeUrl + "/img/red-hat-logo.png"); + themeConfig.put("background", themeUrl + "/img/login-screen-background.jpg"); + themeConfig.put("displayPoweredBy", true); } public String getFormsPath() { diff --git a/forms/src/main/resources/META-INF/resources/forms/theme/default/template-login.ftl b/forms/src/main/resources/META-INF/resources/forms/theme/default/template-login.ftl index 30f422c029..1a20b3a068 100644 --- a/forms/src/main/resources/META-INF/resources/forms/theme/default/template-login.ftl +++ b/forms/src/main/resources/META-INF/resources/forms/theme/default/template-login.ftl @@ -75,7 +75,7 @@ <#if template.themeConfig['displayPoweredBy']>

- ${rb.getString('poweredByKeycloak')} + ${rb.getString('poweredByKeycloak')}

From 354abf8a4ae61ad948e0c64186c164e781430e69 Mon Sep 17 00:00:00 2001 From: Stian Thorgersen Date: Mon, 13 Jan 2014 15:11:06 +0000 Subject: [PATCH 4/4] Added Keycloak logo to login and registration forms --- .../java/org/keycloak/forms/TemplateBean.java | 2 +- .../default/img/customer-login-screen-bg2.jpg | Bin 37443 -> 0 bytes .../forms/theme/default/img/keycloak-logo.png | Bin 0 -> 7695 bytes .../forms/theme/default/img/red-hat-logo.png | Bin 3010 -> 0 bytes 4 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 forms/src/main/resources/META-INF/resources/forms/theme/default/img/customer-login-screen-bg2.jpg create mode 100644 forms/src/main/resources/META-INF/resources/forms/theme/default/img/keycloak-logo.png delete mode 100644 forms/src/main/resources/META-INF/resources/forms/theme/default/img/red-hat-logo.png diff --git a/forms/src/main/java/org/keycloak/forms/TemplateBean.java b/forms/src/main/java/org/keycloak/forms/TemplateBean.java index 211717c449..bb19d2cd5b 100644 --- a/forms/src/main/java/org/keycloak/forms/TemplateBean.java +++ b/forms/src/main/java/org/keycloak/forms/TemplateBean.java @@ -51,7 +51,7 @@ public class TemplateBean { themeConfig.put("styles", themeUrl + "/styles.css"); - themeConfig.put("logo", themeUrl + "/img/red-hat-logo.png"); + themeConfig.put("logo", themeUrl + "/img/keycloak-logo.png"); themeConfig.put("background", themeUrl + "/img/login-screen-background.jpg"); themeConfig.put("displayPoweredBy", true); } diff --git a/forms/src/main/resources/META-INF/resources/forms/theme/default/img/customer-login-screen-bg2.jpg b/forms/src/main/resources/META-INF/resources/forms/theme/default/img/customer-login-screen-bg2.jpg deleted file mode 100644 index d51bfbe4b459554374eaa606e4e333a6a6da3de8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37443 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 z 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 JPDHLkV1hZBb{7Bu literal 0 HcmV?d00001 diff --git a/forms/src/main/resources/META-INF/resources/forms/theme/default/img/red-hat-logo.png b/forms/src/main/resources/META-INF/resources/forms/theme/default/img/red-hat-logo.png deleted file mode 100644 index 0b01b1a4459ad00fc2ac4305e32e81025c0dcc38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3010 zcmaJ@dpwhEA72bJhY+bL)|4D(Ck%@sBYRnnY2}dFZY;L3O>>B6RH9LGKIKs8;1Eg& zB#~1^JV~UaB9cgQ%A@C74Nurj~o;R1%W_vBwM1h zXipdYXo#d}U31^ykZ9Y;v!?J|*uFeIl>>k*>1-bWPGVC10B3+o4-4)9%s?P<1jCiW zqmbA$I0C;d8z>mQ)M@-k; z!#RLU_+D39cmU0mj@Y#mZWc-q2`~X36&}hAWN`_h=7{gQ1kri*8jXN|hwuW-5&r~5 zAv?mY*c|4FnA0ck40e(42_MAk#HOai$P;>Xe>@2YfLb}5il6|j}Ia8#-aNX zoQXC+e2FY`gg=iLL_nkYd_IbAfMRp}&{$Jb(^U-|PG5x3=Z3L()KGmESM#R=5#Z7| zj36F^&4RBgQhnGVJadF7(tlE52K|y{aetIaR4{ZXH3*GGVOCT62_%#MKa|P*h34{{ zf&aw&KZUujVL<@e8Q`)*I5bh?d^J~H1re+`0F}q)xU$)SKdb2I&*rhY{_G&Qm5ULa zOrA$$vnBQ_&M}Zk6@=OFcj3WTuhQnsUzo$%K{5}@qZ}om~ z>A#JIX#HC*S`-X=wXy%z=$}`j=~+Gg8e5U^Yw!VplML5tgE_U0Q_>>%Q&o=rygm759`>(Sz6wvL7MT8{5Wj`JYU z$(DKPKnIJl^&Tgr`VKbT@Ug66Ky+rNR=G(Ihp(tpUPI}1Fm?v9Z8rY&*l)}Wz+?E4ong9Ynz?KG}OTewSjm#e|1 z>w+?FkRObyjJJU+x{j|@t{8|nE1#>eowwZ_wF`uk>Mu*G@M@z}w7az<{#N)i&#AI& zPA#!jZGFzke{GGuEL7Fo)S4RKdAL-v%zUPejnx5nc|ppc<90rkSC_;eo?X5j!zrFp z6x2&)Kad&scX|$RVVRtNteG!%#JouWGo{R zs8*kb-{wZP+%}z4y4W}iKDVQAUfpR>Xv=xZ|rJ2Nn`DOGYIE>oNI5j_e` zLka?C17ZqZTo`&Y{#Q$v29AAEcEY$96+8f1*eN7|nukL|#P{Abjq`5Z3%-<$G|N-^ zq|NHywl&X!EOtxY2blaMszdWniLJ0gEj zIbl{GXG}co6x;Sx@tmrsZJK1*9&hh zI2(wk%1dJm-kW4sWck(lG6zm^Plb4u(DQ*&(VXQIC@r&&WLzeD;=}4GZhnX6-Y!gsHR&&dd?`l!AW@k)KH&4ukw|l9N=2z#+ZyyOC)6t6YZT;X=1ptpKNaMjt zi6;=ac`T{C$^Rx-eY&f0o11Q0w{?T2H|EGpcQzaJ zBK5_)T!EpVD%vCWrL2uV%xjO4ZTOMPbMvQ&7*|X6_fm@XCJ{rQ(=N2uoGvUwm+MxQUqKXf1^C%yNzK>d zp53D?Mk?KJ_cw$#uAG=mP4mu??!QuZ-#lQWuua>!M+c|6ZCA4&|GqAyw!!sg@vWLQ zOw!EwU#?DCdabY??4GvvQ(XT?Bv>nMjhlY^fs!XJGt8QUB*Ey}DwrwgVLT=(HPrd# z*^ZB6;4+r0C+sRiw(?d4s?^80VFn{l36Q)#MBDiHM_pci=5T8-IBL)SECd--gj|UB z??)aN8~RsFi{*hU?$3Hh0b*E^)52iyw>4NmsC=(&!M#RvqM_KK%1bC{ZL7_FpaO+F zw(n-1U%o%AaV%mWad&-4eAcH8_q__CW1iI5MEgU;g6MA*C8fyP(~mGIw^X;p-9G4S zi``}utg`anRw#(>=%e38ZRV;7kDYBaF}iYb;^yR)Iv#r6;pUE!tDV|}Okq1qVSj#g zsbR=kw~Fl-l9VZ@QArMZnXO4KYEIVW2lj(0VnzGK&#>d$h9$z55zq-?AhW@J*tv1RBd1Lrcudl(}m%~MQqCuJ3(;=#xH#bIeGDV z_3lQc{?Z(50U^DZWm>sa5aL|4O)J&^xYGJU1ALrZnkow_8G2i&-Yj-RG~v2++% x(lUINT}o*@m7Kh?o$U5G$!G^ywEiuz0d$ZMq71ON5LaK-B