<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Feb 4, 2014 at 6:34 PM, Karel Piwko <span dir="ltr">&lt;<a href="mailto:kpiwko@redhat.com" target="_blank">kpiwko@redhat.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div class="im">On Tue, 4 Feb 2014 18:21:10 +0100<br>
Matthias Wessendorf &lt;<a href="mailto:matzew@apache.org">matzew@apache.org</a>&gt; wrote:<br>
<br>
&gt; oh, this was a cross-post :-) (adding keycloak)<br>
&gt;<br>
&gt;<br>
&gt; On Tue, Feb 4, 2014 at 6:20 PM, Matthias Wessendorf &lt;<a href="mailto:matzew@apache.org">matzew@apache.org</a>&gt;wrote:<br>
&gt;<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; On Tue, Feb 4, 2014 at 6:13 PM, Karel Piwko &lt;<a href="mailto:kpiwko@redhat.com">kpiwko@redhat.com</a>&gt; wrote:<br>
&gt; &gt;<br>
&gt; &gt;&gt; Hey,<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; I&#39;ve combined Aerogear UPS and Keycloak cartridges together. You can<br>
&gt; &gt;&gt; check the<br>
&gt; &gt;&gt; results at:<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; <a href="https://agpushkeycloak-mobileqa.rhcloud.com/" target="_blank">https://agpushkeycloak-mobileqa.rhcloud.com/</a> (admin/password)<br>
&gt; &gt;&gt; <a href="https://keycloak-mobileqa.rhcloud.com/" target="_blank">https://keycloak-mobileqa.rhcloud.com/</a> (admin/password)<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt;<br>
&gt; &gt; I think it would be awesome if the keycloak bits would be included into<br>
&gt; &gt; the UPS bits, to have something OOTB, instead of pointing to a different<br>
&gt; &gt; server (CORS)<br>
<br>
</div>I&#39;ve added Keycloak AS7 modules to UPS cart but not admin console. I believe<br>
that Keycloak is SaaS, so usage with two different carts reflect reality better.<br>
Configuring Keycloak cart once and let all other carts use is seems the right<br>
way to me.<br>
<div class="im"><br></div></blockquote><div><br></div><div><span style="font-family:arial,sans-serif;font-size:13px">there is IMO pros and cons in both ways </span><br></div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div class="im">
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt;&gt; For keycloak, I have used original cart [1]:<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; $ rhc app create -g small --no-git keycloak<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; <a href="https://raw.github.com/stianst/openshift-keycloak-cartridge/master/metadata/manifest.yml" target="_blank">https://raw.github.com/stianst/openshift-keycloak-cartridge/master/metadata/manifest.yml</a><br>

&gt; &gt;&gt;<br>
&gt; &gt;&gt; For UPS, I have modified matzew&#39;s one stored in my repo [2] and modified<br>
&gt; &gt;&gt; UPS<br>
&gt; &gt;&gt; [3]:<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; $ rhc app create -g small --no-git agpushkeycloak mysql-5.1<br>
&gt; &gt;&gt; &#39;<br>
&gt; &gt;&gt; <a href="http://cartreflect-claytondev.cloud.com/reflect?github=kpiwko/openshift-origin-cartridge-aerogear-push&amp;commit=a45f93afaa275de082f9da749bce13fb33acdb75" target="_blank">http://cartreflect-claytondev.cloud.com/reflect?github=kpiwko/openshift-origin-cartridge-aerogear-push&amp;commit=a45f93afaa275de082f9da749bce13fb33acdb75</a><br>

&gt; &gt;&gt; &#39;<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; There are some gotchas though:<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; * keycloak.json - I&#39;m not sure how this will be addressed by WF subsystem.<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; the public-key needs to be, as far as I can see, included inside of the<br>
&gt; &gt; standalone.xml (keycloak subsystem section).<br>
&gt; &gt; Which is somewhat a similar issue; I think, if I get it right, that means<br>
&gt; &gt; as you plan to support more and more &#39;realms&#39;, you keep editing the<br>
&gt; &gt; standalone xml.<br>
<br>
</div>That is great improvement w.r.t. current situation but does not handle OpenShift<br>
cart scenarios.<br>
<div><div class="h5"><br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt;&gt; We<br>
&gt; &gt;&gt;   still need a way how to pass keycloak.json to UPS cartridge, which is<br>
&gt; &gt;&gt; AS7<br>
&gt; &gt;&gt;   and we can&#39;t ask user to modify standalone.xml anyway. However, we<br>
&gt; &gt;&gt; could make<br>
&gt; &gt;&gt;   a hook on OpenShift - user will add keycloak.json to git repo and it<br>
&gt; &gt;&gt; will<br>
&gt; &gt;&gt;   automagically put at right location. Could we have a hook in Keycloak to<br>
&gt; &gt;&gt;   load keycloak.json from external location? Or should we rather do some<br>
&gt; &gt;&gt; war<br>
&gt; &gt;&gt;   exploding magic?<br>
&gt; &gt;&gt; * AS7-3227 I worked this around by doing parameter injection for<br>
&gt; &gt;&gt;   SecurityContext in UPS. Nasty. Can we make newer RESTEasy part of<br>
&gt; &gt;&gt; Keycloak<br>
&gt; &gt;&gt;   package for AS7? Any better option?<br>
&gt; &gt;&gt; * Ember in UPS is firing AJAX request to REST Endpoints on the same<br>
&gt; &gt;&gt; domain.<br>
&gt; &gt;&gt;   However, as it goes through Keycloak Auth Server, this is considered<br>
&gt; &gt;&gt; CORS<br>
&gt; &gt;&gt;   request. I had to configure Web Origin for UPS application. This is<br>
&gt; &gt;&gt;   confusing to me, Origin header should be transparent for Keycloak as I&#39;m<br>
&gt; &gt;&gt;   firing request to the same domain. Note this does not happen in Firefox,<br>
&gt; &gt;&gt;   which identifies same domain and avoids Origin header. I need some<br>
&gt; &gt;&gt; insight<br>
&gt; &gt;&gt;   here from more skilled people.<br>
&gt; &gt;&gt;<br>
&gt; &gt;<br>
&gt; &gt; hmmmmm .... sounds &#39;good&#39; :-)<br>
:-)<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt;&gt; * I wasn&#39;t able to keep http-&gt;https rewriting valve with Keycloak to<br>
&gt; &gt;&gt; avoid UPS<br>
&gt; &gt;&gt;   usage via http protocol. I&#39;ll go deeper into that.<br>
&gt; &gt;&gt;<br>
&gt; &gt;<br>
&gt; &gt; https is enforced on our UPS cartridge<br>
</div></div>RI had to remove this enforcement. I&#39;m just trying to put it back.<br>
<div><div class="h5">&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt;&gt; * Changes to Web Origin in Keycloak admin UI are not reflected to already<br>
&gt; &gt;&gt; logged<br>
&gt; &gt;&gt;   users. They need to log out first.<br>
&gt; &gt;&gt; * Missing logout button in UPS. Related to previous point.<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; Let me know if you want me to convert some of these points to JIRAs in<br>
&gt; &gt;&gt; AGPUSH<br>
&gt; &gt;&gt; or KEYCLOAK projects. Also, let me please now if I should have configured<br>
&gt; &gt;&gt; something differently.<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; Thanks,<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; Karel<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; [1] <a href="https://github.com/stianst/openshift-keycloak-cartridge" target="_blank">https://github.com/stianst/openshift-keycloak-cartridge</a><br>
&gt; &gt;&gt; [2]<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; <a href="https://github.com/kpiwko/openshift-origin-cartridge-aerogear-push/tree/keycloak" target="_blank">https://github.com/kpiwko/openshift-origin-cartridge-aerogear-push/tree/keycloak</a><br>
&gt; &gt;&gt; [3]<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; <a href="https://github.com/kpiwko/aerogear-unifiedpush-server/tree/keycloak-openshift" target="_blank">https://github.com/kpiwko/aerogear-unifiedpush-server/tree/keycloak-openshift</a><br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; More detailed steps:<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; 1/ Create Keycloak cart<br>
&gt; &gt;&gt; 2/ Add AeroGear-UnifiedPush realm with roles admin, user<br>
&gt; &gt;&gt; 3/ Add ag-push app with scopes admin, user, allow Web Origin for UPS cart<br>
&gt; &gt;&gt; location<br>
&gt; &gt;&gt; 4/ Get keycloak.json<br>
&gt; &gt;&gt; 5/ Enable CORS in keycloak.json, modify password<br>
&gt; &gt;&gt; 6/ Add keycloak.json to<br>
&gt; &gt;&gt; aerogear-unifiedpush-server/src/main/webapp/WEB-INF<br>
&gt; &gt;&gt; 7/ Package UPS via &#39;mvn clean package&#39;<br>
&gt; &gt;&gt; 8/ Put war into<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; openshift-origin-cartridge-aerogear-push/versions/0.9.0/standalone/deployments<br>
&gt; &gt;&gt; 9/ Push that online<br>
&gt; &gt;&gt; 10/ Create UPS cart using reflector cartridge (use commit sha1 if not<br>
&gt; &gt;&gt; using<br>
&gt; &gt;&gt; master), enable mysql-5.1 gear as well<br>
&gt; &gt;&gt; 11/ Create an user with roles admin/user in AeroGear-UnifiedPush realm<br>
&gt; &gt;&gt; 12/ Enjoy UPS secured by Keycloak. Have a big cup of coffee.<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; _______________________________________________<br>
&gt; &gt;&gt; aerogear-dev mailing list<br>
&gt; &gt;&gt; <a href="mailto:aerogear-dev@lists.jboss.org">aerogear-dev@lists.jboss.org</a><br>
&gt; &gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/aerogear-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a><br>
&gt; &gt;&gt;<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; --<br>
&gt; &gt; Matthias Wessendorf<br>
&gt; &gt;<br>
&gt; &gt; blog: <a href="http://matthiaswessendorf.wordpress.com/" target="_blank">http://matthiaswessendorf.wordpress.com/</a><br>
&gt; &gt; sessions: <a href="http://www.slideshare.net/mwessendorf" target="_blank">http://www.slideshare.net/mwessendorf</a><br>
&gt; &gt; twitter: <a href="http://twitter.com/mwessendorf" target="_blank">http://twitter.com/mwessendorf</a><br>
&gt; &gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
<br>
</div></div>_______________________________________________<br>
keycloak-dev mailing list<br>
<a href="mailto:keycloak-dev@lists.jboss.org">keycloak-dev@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/keycloak-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/keycloak-dev</a><br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br>Matthias Wessendorf <br><br>blog: <a href="http://matthiaswessendorf.wordpress.com/" target="_blank">http://matthiaswessendorf.wordpress.com/</a><br>sessions: <a href="http://www.slideshare.net/mwessendorf" target="_blank">http://www.slideshare.net/mwessendorf</a><br>
twitter: <a href="http://twitter.com/mwessendorf" target="_blank">http://twitter.com/mwessendorf</a>
</div></div>