<div dir="ltr"><div>Hello folks!<br></div><div><br></div><div>Bill Burk was helping on the Keycloak front and besides fixing related items on the Keycloak server, he also created an example that we can use as a template for the actual integration. See [1]</div>
<div><br></div><div>In the past, Bruno and I did integrate w/ an external Keycloak server (see [2]), and we did include the keycloak.json file (See [3]). Thanks to Bill's work on Keycloak, the 'protected app' no longer needs that, see [4].</div>
<div>Also there is no more the need to customize the Keycloak Rest Application (Stian and I did look into that as well).</div><div><br></div><div><br></div><div>Good news: This means the UPS can stay as it is -> no need to change internals (e.g. the 'bundle all in one WAR file' did force us to change our '/rest' URLs, as Keycloak uses them, see [5]).</div>
<div><br></div><div>Inside of our 'modular' Keycloak branch (see [2] again), we can apply the work from Bill:</div><div>* our current 'server' module will use a listener similar to [4]</div><div>* create a "ups-auth" module similar to [6]</div>
<div><br></div><div>On the 'ups-auth module' there is one area where we need to have some future improvement:</div><div>* testrealm.json -> needs to be in Java code, due to the URL being hard-coded in there (we need to resolve the URL of the host, running the bits). But, IMO for now that should be good enough.</div>
<div><br></div><div>Bruno did offer to help out on the Keycloak integration, so that I can go back to the analytics and mertrics feature. Thanks abstractj!! <3</div><div><br></div><div>Greetings,</div><div>Matthias</div>
<div><br></div><div>[1] <a href="https://github.com/keycloak/keycloak/tree/master/project-integrations/aerogear-ups">https://github.com/keycloak/keycloak/tree/master/project-integrations/aerogear-ups</a></div><div>[2] <a href="https://github.com/aerogear/aerogear-unifiedpush-server/tree/keycloak-modular">https://github.com/aerogear/aerogear-unifiedpush-server/tree/keycloak-modular</a></div>
<div>[3] <a href="https://github.com/aerogear/aerogear-unifiedpush-server/blob/keycloak-modular/server/src/main/webapp/WEB-INF/keycloak.json">https://github.com/aerogear/aerogear-unifiedpush-server/blob/keycloak-modular/server/src/main/webapp/WEB-INF/keycloak.json</a></div>
<div>[4] <a href="https://github.com/keycloak/keycloak/blob/master/project-integrations/aerogear-ups/app/src/main/java/org/keycloak/example/BootstrapListener.java">https://github.com/keycloak/keycloak/blob/master/project-integrations/aerogear-ups/app/src/main/java/org/keycloak/example/BootstrapListener.java</a></div>
<div>[5] <a href="https://github.com/aerogear/aerogear-unifiedpush-server/tree/keycloak-embedded">https://github.com/aerogear/aerogear-unifiedpush-server/tree/keycloak-embedded</a></div><div>[6] <a href="https://github.com/keycloak/keycloak/tree/master/project-integrations/aerogear-ups/auth-server">https://github.com/keycloak/keycloak/tree/master/project-integrations/aerogear-ups/auth-server</a></div>
<div><br></div><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>