<font face="arial" size="2"><p style="margin:0;padding:0;font-family: arial; font-size: 10pt; word-wrap: break-word;">Stian,</p>
<p style="margin:0;padding:0;font-family: arial; font-size: 10pt; word-wrap: break-word;">&nbsp;</p>
<p style="margin:0;padding:0;font-family: arial; font-size: 10pt; word-wrap: break-word;">Thanks for clarifying. A couple of more questions and my sincere apologies for troubling u guys amidst all the work.</p>
<p style="margin:0;padding:0;font-family: arial; font-size: 10pt; word-wrap: break-word;">I could not get the saml endpoints token endpoints but the openid connect protocol works fine now.</p>
<p style="margin:0;padding:0;font-family: arial; font-size: 10pt; word-wrap: break-word;">&nbsp;</p>
<p style="margin:0;padding:0;font-family: arial; font-size: 10pt; word-wrap: break-word;"><em><strong>Extract from previous email</strong></em></p>
<p style="margin:0;padding:0;font-family: arial; font-size: 10pt; word-wrap: break-word;">--------------------------------</p>
<p style="margin:0;padding:0;font-family: arial; font-size: 10pt; word-wrap: break-word;">&gt; &gt; &gt; * Refreshing token when expired<br />&gt; &gt; &gt; * Handle logout events from Keycloak<br />&gt; &gt; &gt; * Clustering issues<br />&gt; &gt; &gt; * If you want to support creating rest endpoints in PHP you also need to<br />&gt; &gt; &gt; support verifying the bearer token included in authorization header, this<br />&gt; &gt; &gt; can be done by checking the jws signature using the realm public key</p>
<p style="margin:0;padding:0;font-family: arial; font-size: 10pt; word-wrap: break-word;">&nbsp;</p>
<p style="margin:0;padding:0;font-family: arial; font-size: 10pt; word-wrap: break-word;">* Handle logout events from Keycloak</p>
<p style="margin:0;padding:0;font-family: arial; font-size: 10pt; word-wrap: break-word;">Are there any specific events I should listen to for this purpose? I saw that the js adapter somehow handles this via the iframe but is there any way for me to support me in the php backend or any other app?</p>
<p style="margin:0;padding:0;font-family: arial; font-size: 10pt; word-wrap: break-word;">Basically let me explain the scenario.</p>
<p style="margin:0;padding:0;font-family: arial; font-size: 10pt; word-wrap: break-word;">&nbsp;I have a php app and a tomcat applicaton that call keycloak for auth. I logout from the tomcat application and I need the php app user to force logout... What are the events i should listen to? Is there any document which contains these details?</p>
<p style="margin:0;padding:0;font-family: arial; font-size: 10pt; word-wrap: break-word;">&nbsp;</p>
<p style="margin:0;padding:0;font-family: arial; font-size: 10pt; word-wrap: break-word;">* Clustering issues</p>
<p style="margin:0;padding:0;font-family: arial; font-size: 10pt; word-wrap: break-word;">Are there are clustering issues with the adapters I should be aware of? or Is it simply the clustering on the server end you are referring to?</p>
<p style="margin:0;padding:0;font-family: arial; font-size: 10pt; word-wrap: break-word;">&nbsp;</p>
<p style="margin:0;padding:0;font-family: arial; font-size: 10pt; word-wrap: break-word;">Thanks. Appreciate ur feedback...please let me know any concerns/factors I should be aware regarding the above two points.</p>
<p style="margin:0;padding:0;font-family: arial; font-size: 10pt; word-wrap: break-word;">&nbsp;</p>
<p style="margin:0;padding:0;font-family: arial; font-size: 10pt; word-wrap: break-word;">Kalinga</p>
<!--WM_COMPOSE_SIGNATURE_START--><!--WM_COMPOSE_SIGNATURE_END-->
<p style="margin:0;padding:0;font-family: arial; font-size: 10pt; word-wrap: break-word;">&nbsp;</p>
<p style="margin:0;padding:0;font-family: arial; font-size: 10pt; word-wrap: break-word;"><br />-----Original Message-----<br />From: "Stian Thorgersen" &lt;stian@redhat.com&gt;<br />Sent: Friday, March 20, 2015 2:12pm<br />To: "Kalinga Dissanayake" &lt;kalinga@leapset.com&gt;<br />Cc: keycloak-user@lists.jboss.org<br />Subject: Re: [keycloak-user] Customization of authentication mechanism and +<br /><br /></p>
<div id="SafeStyles1427094355"><br /><br />----- Original Message -----<br />&gt; From: "Kalinga Dissanayake" &lt;kalinga@leapset.com&gt;<br />&gt; To: "Stian Thorgersen" &lt;stian@redhat.com&gt;<br />&gt; Cc: keycloak-user@lists.jboss.org<br />&gt; Sent: Friday, 20 March, 2015 9:21:29 AM<br />&gt; Subject: Re: [keycloak-user] Customization of authentication mechanism and +<br />&gt; <br />&gt; <br />&gt; Stian,<br />&gt; As per your previous email I should use the endpoint<br />&gt; /{realm}/protocols/openid-connect/token<br />&gt; However, I am using version 1.1.0.Final of keycloak. Seems like this is the<br />&gt; production ready release available, however this does not have the above<br />&gt; endpoint [ /{realm}/protocols/openid-connect/token]<br />&gt; Instead Version 1.1.0 Final has this end point which seems to be doing the<br />&gt; same functionality;<br />&gt; /realms/demo/protocol/openid-connect/access/codes<br /><br />Yes, sorry for the confusion.<br /><br />&gt; <br />&gt; So I have a few questions regarding the above;<br />&gt; 1/ Is the /access/codes api endpoint same as /token endpoint. Where the<br />&gt; latter is planned to released in a future version? I compared the js<br />&gt; adapters in 1.1.0 and 1.2.0.Beta. The 1.1.0 version uses /access/codes api<br />&gt; endpoint while 1.2.0.Beta uses /token<br /><br />It's equivalent and hasn't been removed yet, just deprecated so will still work in 1.2.0.Beta1, but will be removed in a future release.<br /><br />In 1.1.0.Final we had multiple token endpoint (/access/codes, /refresh, /grants/access) these don't require grant_type param. These are now deprecated and we've introduce the single endpoint (/token) that requires grant_type. This is so comply with the OpenID Connect spec.<br /><br />&gt; 2/ Similarly /{realm}/protocols/openid-connect/auth api end point has been<br />&gt; changed. What is the mapping endpoint for this in 1.1.0 version? Are there<br />&gt; are other apis signatures that are planned to be changed in the future?<br /><br />Nothing planned<br /><br />&gt; 3/ If I am using keycloak for an application which I am planning to roll out<br />&gt; to production soon, which version would u recommend?<br /><br />1.2.0.Beta1 is out in a week or two, so I recommend using that. We'll only back-port fixes to 1.1.x if we find critical security issues.<br /><br />&gt; 4/ The above apis are for openid-connect. What are the endpoints available if<br />&gt; the authorization type is saml?<br /><br />I don't have this off hand, but have a look at the SAML examples and you should find that out easily. Currently we only provide adapters for OpenID Connect.<br /><br />&gt; <br />&gt; Extract from previous email &lt;&lt;Stian&gt;&gt;<br />&gt; &gt; &gt; * Configure adapter using keycloak.json<br />&gt; &gt; &gt; * Implement client side of OAuth2 Authorization Code Grant<br />&gt; &gt; &gt; 1. Generate a state variable and store in a cookie or session<br />&gt; &gt; &gt; 2. Redirect to<br />&gt; &gt; &gt; /{realm}/protocols/openid-connect/auth?client_id=&lt;client&gt;&amp;response_type=code&amp;state=&lt;generate<br />&gt; &gt; &gt; uuid&gt;&amp;redirect_uri=&lt;callback uri&gt;<br />&gt; &gt; &gt; 3. Once the user has logged-in it's redirected back to &lt;callback uri&gt;<br />&gt; &gt; &gt; with<br />&gt; &gt; &gt; a code query param<br />&gt; &gt; &gt; 4. Use the code query param to obtain a token by posting to<br />&gt; &gt; &gt; /{realm}/protocols/openid-connect/token the form-data should be<br />&gt; &gt; &gt; grant_type=authorization_code&amp;code=&lt;code&gt; you also need to include a http<br />&gt; &gt; &gt; basic authorization header with client id and secret<br />&gt; <br />&gt; Thanks.<br />&gt; <br />&gt; Kalinga<br />&gt; <br />&gt; <br />&gt; -----Original Message-----<br />&gt; From: "Stian Thorgersen" &lt;stian@redhat.com&gt;<br />&gt; Sent: Tuesday, March 17, 2015 3:55pm<br />&gt; To: "Kalinga Dissanayake" &lt;kalinga@leapset.com&gt;<br />&gt; Cc: keycloak-user@lists.jboss.org<br />&gt; Subject: Re: [keycloak-user] Customization of authentication mechanism and +<br />&gt; <br />&gt; <br />&gt; <br />&gt; Source code for all adapters is in:<br />&gt; <br />&gt; https://github.com/keycloak/keycloak/tree/master/integration<br />&gt; <br />&gt; ----- Original Message -----<br />&gt; &gt; From: "Kalinga Dissanayake" &lt;kalinga@leapset.com&gt;<br />&gt; &gt; To: "Stian Thorgersen" &lt;stian@redhat.com&gt;<br />&gt; &gt; Cc: keycloak-user@lists.jboss.org<br />&gt; &gt; Sent: Tuesday, March 17, 2015 11:23:10 AM<br />&gt; &gt; Subject: Re: [keycloak-user] Customization of authentication mechanism and<br />&gt; &gt; +<br />&gt; &gt; <br />&gt; &gt; <br />&gt; &gt; Thanks Stian. :) Let me first go thru the resources I have on the website.<br />&gt; &gt; The java source code of the adapter also must be present somewhere for me<br />&gt; &gt; to<br />&gt; &gt; have a look I guess?<br />&gt; &gt; <br />&gt; &gt; Kalinga<br />&gt; &gt; <br />&gt; &gt; -----Original Message-----<br />&gt; &gt; From: "Stian Thorgersen" &lt;stian@redhat.com&gt;<br />&gt; &gt; Sent: Tuesday, March 17, 2015 3:14pm<br />&gt; &gt; To: "Kalinga Dissanayake" &lt;kalinga@leapset.com&gt;<br />&gt; &gt; Cc: keycloak-user@lists.jboss.org<br />&gt; &gt; Subject: Re: [keycloak-user] Customization of authentication mechanism and<br />&gt; &gt; +<br />&gt; &gt; <br />&gt; &gt; <br />&gt; &gt; <br />&gt; &gt; If you have any more questions feel free to ask, anyone contributing code<br />&gt; &gt; gets extra questions answered ;)<br />&gt; &gt; <br />&gt; &gt; <br />&gt; &gt; ----- Original Message -----<br />&gt; &gt; &gt; From: "Stian Thorgersen" &lt;stian@redhat.com&gt;<br />&gt; &gt; &gt; To: "Kalinga Dissanayake" &lt;kalinga@leapset.com&gt;<br />&gt; &gt; &gt; Cc: keycloak-user@lists.jboss.org<br />&gt; &gt; &gt; Sent: Tuesday, March 17, 2015 10:41:51 AM<br />&gt; &gt; &gt; Subject: Re: [keycloak-user] Customization of authentication mechanism<br />&gt; &gt; &gt; and<br />&gt; &gt; &gt; +<br />&gt; &gt; &gt; <br />&gt; &gt; &gt; There is no hints regarding adapter logic, but what you'll need is:<br />&gt; &gt; &gt; <br />&gt; &gt; &gt; * Configure adapter using keycloak.json<br />&gt; &gt; &gt; * Implement client side of OAuth2 Authorization Code Grant<br />&gt; &gt; &gt; 1. Generate a state variable and store in a cookie or session<br />&gt; &gt; &gt; 2. Redirect to<br />&gt; &gt; &gt; /{realm}/protocols/openid-connect/auth?client_id=&lt;client&gt;&amp;response_type=code&amp;state=&lt;generate<br />&gt; &gt; &gt; uuid&gt;&amp;redirect_uri=&lt;callback uri&gt;<br />&gt; &gt; &gt; 3. Once the user has logged-in it's redirected back to &lt;callback uri&gt;<br />&gt; &gt; &gt; with<br />&gt; &gt; &gt; a code query param<br />&gt; &gt; &gt; 4. Use the code query param to obtain a token by posting to<br />&gt; &gt; &gt; /{realm}/protocols/openid-connect/token the form-data should be<br />&gt; &gt; &gt; grant_type=authorization_code&amp;code=&lt;code&gt; you also need to include a http<br />&gt; &gt; &gt; basic authorization header with client id and secret<br />&gt; &gt; &gt; <br />&gt; &gt; &gt; Once you've done that you should have a token available to the<br />&gt; &gt; &gt; application.<br />&gt; &gt; &gt; Then you have to deal with:<br />&gt; &gt; &gt; <br />&gt; &gt; &gt; * Refreshing token when expired<br />&gt; &gt; &gt; * Handle logout events from Keycloak<br />&gt; &gt; &gt; * Clustering issues<br />&gt; &gt; &gt; * If you want to support creating rest endpoints in PHP you also need to<br />&gt; &gt; &gt; support verifying the bearer token included in authorization header, this<br />&gt; &gt; &gt; can be done by checking the jws signature using the realm public key<br />&gt; &gt; &gt; <br />&gt; &gt; &gt; ----- Original Message -----<br />&gt; &gt; &gt; &gt; From: "Kalinga Dissanayake" &lt;kalinga@leapset.com&gt;<br />&gt; &gt; &gt; &gt; To: "Kalinga Dissanayake" &lt;kalinga@leapset.com&gt;<br />&gt; &gt; &gt; &gt; Cc: "Stian Thorgersen" &lt;stian@redhat.com&gt;, "Bill Burke"<br />&gt; &gt; &gt; &gt; &lt;bburke@redhat.com&gt;, keycloak-user@lists.jboss.org<br />&gt; &gt; &gt; &gt; Sent: Tuesday, March 17, 2015 10:26:18 AM<br />&gt; &gt; &gt; &gt; Subject: Re: [keycloak-user] Customization of authentication mechanism<br />&gt; &gt; &gt; &gt; and<br />&gt; &gt; &gt; &gt; +<br />&gt; &gt; &gt; &gt; <br />&gt; &gt; &gt; &gt; <br />&gt; &gt; &gt; &gt; * I can get a php application in place<br />&gt; &gt; &gt; &gt; <br />&gt; &gt; &gt; &gt; Kalinga<br />&gt; &gt; &gt; &gt; <br />&gt; &gt; &gt; &gt; -----Original Message-----<br />&gt; &gt; &gt; &gt; From: "Kalinga Dissanayake" &lt;kalinga@leapset.com&gt;<br />&gt; &gt; &gt; &gt; Sent: Tuesday, March 17, 2015 2:55pm<br />&gt; &gt; &gt; &gt; To: "Stian Thorgersen" &lt;stian@redhat.com&gt;<br />&gt; &gt; &gt; &gt; Cc: "Bill Burke" &lt;bburke@redhat.com&gt;, keycloak-user@lists.jboss.org<br />&gt; &gt; &gt; &gt; Subject: Re: [keycloak-user] Customization of authentication mechanism<br />&gt; &gt; &gt; &gt; and<br />&gt; &gt; &gt; &gt; +<br />&gt; &gt; &gt; &gt; <br />&gt; &gt; &gt; &gt; <br />&gt; &gt; &gt; &gt; <br />&gt; &gt; &gt; &gt; Thanks again.<br />&gt; &gt; &gt; &gt; I need to go thru most documentation to get the hang of it. Will do.<br />&gt; &gt; &gt; &gt; I would love to contribute if u can get a php application in place, is<br />&gt; &gt; &gt; &gt; it<br />&gt; &gt; &gt; &gt; possible for you to direct me to documentation where there are hints<br />&gt; &gt; &gt; &gt; regarding the adapter logic?<br />&gt; &gt; &gt; &gt; <br />&gt; &gt; &gt; &gt; Kalinga<br />&gt; &gt; &gt; &gt; <br />&gt; &gt; &gt; &gt; <br />&gt; &gt; &gt; &gt; -----Original Message-----<br />&gt; &gt; &gt; &gt; From: "Stian Thorgersen" &lt;stian@redhat.com&gt;<br />&gt; &gt; &gt; &gt; Sent: Tuesday, March 17, 2015 2:25pm<br />&gt; &gt; &gt; &gt; To: "Kalinga Dissanayake" &lt;kalinga@leapset.com&gt;<br />&gt; &gt; &gt; &gt; Cc: "Bill Burke" &lt;bburke@redhat.com&gt;, keycloak-user@lists.jboss.org<br />&gt; &gt; &gt; &gt; Subject: Re: [keycloak-user] Customization of authentication mechanism<br />&gt; &gt; &gt; &gt; and<br />&gt; &gt; &gt; &gt; +<br />&gt; &gt; &gt; &gt; <br />&gt; &gt; &gt; &gt; <br />&gt; &gt; &gt; &gt; <br />&gt; &gt; &gt; &gt; <br />&gt; &gt; &gt; &gt; ----- Original Message -----<br />&gt; &gt; &gt; &gt; &gt; From: "Kalinga Dissanayake" &lt;kalinga@leapset.com&gt;<br />&gt; &gt; &gt; &gt; &gt; To: "Bill Burke" &lt;bburke@redhat.com&gt;<br />&gt; &gt; &gt; &gt; &gt; Cc: keycloak-user@lists.jboss.org<br />&gt; &gt; &gt; &gt; &gt; Sent: Tuesday, March 17, 2015 8:52:12 AM<br />&gt; &gt; &gt; &gt; &gt; Subject: Re: [keycloak-user] Customization of authentication<br />&gt; &gt; &gt; &gt; &gt; mechanism<br />&gt; &gt; &gt; &gt; &gt; and<br />&gt; &gt; &gt; &gt; &gt; +<br />&gt; &gt; &gt; &gt; &gt; <br />&gt; &gt; &gt; &gt; &gt; <br />&gt; &gt; &gt; &gt; &gt; <br />&gt; &gt; &gt; &gt; &gt; Thanks again for your quick feedbacks.<br />&gt; &gt; &gt; &gt; &gt; <br />&gt; &gt; &gt; &gt; &gt; Sorry I have a number of questions so I will be buzzing u guys<br />&gt; &gt; &gt; &gt; &gt; regularly.<br />&gt; &gt; &gt; &gt; &gt; <br />&gt; &gt; &gt; &gt; &gt; I went through the document for the adapters;<br />&gt; &gt; &gt; &gt; &gt; <br />&gt; &gt; &gt; &gt; &gt; http://docs.jboss.org/keycloak/docs/1.1.0.Final/userguide/html/ch08.html<br />&gt; &gt; &gt; &gt; &gt; <br />&gt; &gt; &gt; &gt; &gt; <br />&gt; &gt; &gt; &gt; &gt; <br />&gt; &gt; &gt; &gt; &gt; So lets say I need a php application to be deployed using keycloak as<br />&gt; &gt; &gt; &gt; &gt; my<br />&gt; &gt; &gt; &gt; &gt; SSO<br />&gt; &gt; &gt; &gt; &gt; manager application.<br />&gt; &gt; &gt; &gt; &gt; <br />&gt; &gt; &gt; &gt; &gt; So my basic requirement is that user should have the ability to<br />&gt; &gt; &gt; &gt; &gt; signin<br />&gt; &gt; &gt; &gt; &gt; via<br />&gt; &gt; &gt; &gt; &gt; keycloak. I see that there are no dedicated adapters for php (I guess<br />&gt; &gt; &gt; &gt; &gt; it<br />&gt; &gt; &gt; &gt; &gt; must be in the works)<br />&gt; &gt; &gt; &gt; <br />&gt; &gt; &gt; &gt; We don't have a PHP adapter, and there's no immediate plans to create<br />&gt; &gt; &gt; &gt; one.<br />&gt; &gt; &gt; &gt; You could use:<br />&gt; &gt; &gt; &gt; <br />&gt; &gt; &gt; &gt; * JavaScript adapter<br />&gt; &gt; &gt; &gt; (http://docs.jboss.org/keycloak/docs/1.1.0.Final/userguide/html/ch08.html#javascript-adapter)<br />&gt; &gt; &gt; &gt; * Proxy<br />&gt; &gt; &gt; &gt; (http://docs.jboss.org/keycloak/docs/1.1.0.Final/userguide/html/proxy.html)<br />&gt; &gt; &gt; &gt; <br />&gt; &gt; &gt; &gt; Alternatively have a look on Google for instructions on using OAuth2<br />&gt; &gt; &gt; &gt; and/or<br />&gt; &gt; &gt; &gt; OpenID Connect with PHP. Once 1.2.0.Beta1 is released we'll also have a<br />&gt; &gt; &gt; &gt; OpenID Connect Discovery endpoint, which should make it easier to use<br />&gt; &gt; &gt; &gt; other<br />&gt; &gt; &gt; &gt; OpenID Connect client libraries with Keycloak.<br />&gt; &gt; &gt; &gt; <br />&gt; &gt; &gt; &gt; If you're willing to contribute a PHP adapter then let me know and I<br />&gt; &gt; &gt; &gt; can<br />&gt; &gt; &gt; &gt; give<br />&gt; &gt; &gt; &gt; you more details on what would be required and some hints to get you<br />&gt; &gt; &gt; &gt; started.<br />&gt; &gt; &gt; &gt; <br />&gt; &gt; &gt; &gt; &gt; <br />&gt; &gt; &gt; &gt; &gt; <br />&gt; &gt; &gt; &gt; &gt; <br />&gt; &gt; &gt; &gt; &gt; Is there a guideline that I should follow if I am to do it manually?<br />&gt; &gt; &gt; &gt; &gt; Basically what I should to do replicate what an adapter does (if I<br />&gt; &gt; &gt; &gt; &gt; dont<br />&gt; &gt; &gt; &gt; &gt; want<br />&gt; &gt; &gt; &gt; &gt; to use any adapters or my apps are mobile based or deployed on<br />&gt; &gt; &gt; &gt; &gt; containers<br />&gt; &gt; &gt; &gt; &gt; hat keycloak does not have adapters for). Hope my question is clear.<br />&gt; &gt; &gt; &gt; &gt; <br />&gt; &gt; &gt; &gt; &gt; <br />&gt; &gt; &gt; &gt; &gt; <br />&gt; &gt; &gt; &gt; &gt; Kalinga<br />&gt; &gt; &gt; &gt; &gt; <br />&gt; &gt; &gt; &gt; &gt; <br />&gt; &gt; &gt; &gt; &gt; <br />&gt; &gt; &gt; &gt; &gt; <br />&gt; &gt; &gt; &gt; &gt; -----Original Message-----<br />&gt; &gt; &gt; &gt; &gt; From: "Bill Burke" &lt;bburke@redhat.com&gt;<br />&gt; &gt; &gt; &gt; &gt; Sent: Monday, March 16, 2015 7:46pm<br />&gt; &gt; &gt; &gt; &gt; To: keycloak-user@lists.jboss.org<br />&gt; &gt; &gt; &gt; &gt; Subject: Re: [keycloak-user] Customization of authentication<br />&gt; &gt; &gt; &gt; &gt; mechanism<br />&gt; &gt; &gt; &gt; &gt; and<br />&gt; &gt; &gt; &gt; &gt; +<br />&gt; &gt; &gt; &gt; &gt; <br />&gt; &gt; &gt; &gt; &gt; <br />&gt; &gt; &gt; &gt; &gt; <br />&gt; &gt; &gt; &gt; &gt; Minimally you need to import username. Probably email too if you want<br />&gt; &gt; &gt; &gt; &gt; to use any of our email-based features. With UserFederationProvider<br />&gt; &gt; &gt; &gt; &gt; you<br />&gt; &gt; &gt; &gt; &gt; can delegate to the third-party storage for other user<br />&gt; &gt; &gt; &gt; &gt; attributes/metadata.<br />&gt; &gt; &gt; &gt; &gt; <br />&gt; &gt; &gt; &gt; &gt; On 3/16/2015 6:01 AM, Stian Thorgersen wrote:<br />&gt; &gt; &gt; &gt; &gt; &gt; We don't currently have a way to plugin your own authentication<br />&gt; &gt; &gt; &gt; &gt; &gt; mechanism,<br />&gt; &gt; &gt; &gt; &gt; &gt; but this is something we'll be adding.<br />&gt; &gt; &gt; &gt; &gt; &gt; <br />&gt; &gt; &gt; &gt; &gt; &gt; You have two choices when it comes to users, you can either use our<br />&gt; &gt; &gt; &gt; &gt; &gt; user<br />&gt; &gt; &gt; &gt; &gt; &gt; federation provider mechanism to sync between Keycloak and your<br />&gt; &gt; &gt; &gt; &gt; &gt; current<br />&gt; &gt; &gt; &gt; &gt; &gt; db. Or you can migrate the users fully to the Keycloak db. In<br />&gt; &gt; &gt; &gt; &gt; &gt; either<br />&gt; &gt; &gt; &gt; &gt; &gt; case<br />&gt; &gt; &gt; &gt; &gt; &gt; you have an option on overriding how passwords are verified (either<br />&gt; &gt; &gt; &gt; &gt; &gt; UserFederationProvider or by extending an existing UserProvider).<br />&gt; &gt; &gt; &gt; &gt; &gt; With<br />&gt; &gt; &gt; &gt; &gt; &gt; the<br />&gt; &gt; &gt; &gt; &gt; &gt; above authentication mechanism we'll most likely also make the<br />&gt; &gt; &gt; &gt; &gt; &gt; verification of passwords pluggable which would support different<br />&gt; &gt; &gt; &gt; &gt; &gt; hash<br />&gt; &gt; &gt; &gt; &gt; &gt; algorithms.<br />&gt; &gt; &gt; &gt; &gt; &gt; <br />&gt; &gt; &gt; &gt; &gt; &gt; ----- Original Message -----<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; From: "Kalinga Dissanayake" &lt;kalinga@leapset.com&gt;<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; To: keycloak-user@lists.jboss.org<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; Sent: Monday, March 16, 2015 10:48:55 AM<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; Subject: [keycloak-user] Customization of authentication mechanism<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; and<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; +<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; <br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; <br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; <br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; Guys,<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; <br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; I need to understand the capability of keycloak with my<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; requirement<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; and<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; to<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; ensure that keycloak is scalable to meet my needs. My main<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; requirement<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; is<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; to<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; integrate keycloak to our system to support SSO hence I need to<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; migrate<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; my<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; existing users. My main concerns;<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; <br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; <br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; <br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; 1/ Customize authentication method.<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; <br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; I need to authenticate users similar to what we currently use in<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; our<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; production system. In our system, users are identified by<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; username,<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; password<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; and the pin.<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; <br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; For instance;<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; <br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; User -&gt; jack, password -&gt; pwd, pin -&gt; 50000<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; <br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; User should enter all three to login to the system.<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; <br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; I went through the codebase and I saw that the Authentication<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; Manager<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; (which<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; is a concrete class) does all the work inside keycloak. I managed<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; to<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; customize the frontend with ease, however, in order to support the<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; pin<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; in<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; the backend seems like I have to customize the<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; AuthenticationManager<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; class<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; (no direct SPIs).<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; <br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; Although there is a link here;<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; <br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; http://docs.jboss.org/keycloak/docs/1.0-beta-3/userguide/html/authentication-spi.html<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; <br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; I cant seem to find anything here which matches the current code<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; base<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; (to<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; via<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; a new authentication method via spis) and the example has been<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; removed.<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; <br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; <br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; <br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; 2/ Customize password hashes.<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; <br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; We have our own algorithm used to store password hashes. What<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; should<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; I<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; do<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; to<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; add this to keycloak?<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; <br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; I do not know the current passwords of the users already in our<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; system,<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; so<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; when doing the migration i need keyclock to support the current<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; algorithm<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; we<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; use. Can we plugin new hashing algorithms to meet my needs?<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; <br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; <br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; <br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; Any other issues I might face?<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; <br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; I feel key cloak is the right choice if the above two questions<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; are<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; answered.<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; Please let me know.<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; <br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; _______________________________________________<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; keycloak-user mailing list<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; keycloak-user@lists.jboss.org<br />&gt; &gt; &gt; &gt; &gt; &gt;&gt; https://lists.jboss.org/mailman/listinfo/keycloak-user<br />&gt; &gt; &gt; &gt; &gt; &gt; _______________________________________________<br />&gt; &gt; &gt; &gt; &gt; &gt; keycloak-user mailing list<br />&gt; &gt; &gt; &gt; &gt; &gt; keycloak-user@lists.jboss.org<br />&gt; &gt; &gt; &gt; &gt; &gt; https://lists.jboss.org/mailman/listinfo/keycloak-user<br />&gt; &gt; &gt; &gt; &gt; &gt; <br />&gt; &gt; &gt; &gt; &gt; <br />&gt; &gt; &gt; &gt; &gt; --<br />&gt; &gt; &gt; &gt; &gt; Bill Burke<br />&gt; &gt; &gt; &gt; &gt; JBoss, a division of Red Hat<br />&gt; &gt; &gt; &gt; &gt; http://bill.burkecentral.com<br />&gt; &gt; &gt; &gt; &gt; _______________________________________________<br />&gt; &gt; &gt; &gt; &gt; keycloak-user mailing list<br />&gt; &gt; &gt; &gt; &gt; keycloak-user@lists.jboss.org<br />&gt; &gt; &gt; &gt; &gt; https://lists.jboss.org/mailman/listinfo/keycloak-user<br />&gt; &gt; &gt; &gt; &gt; <br />&gt; &gt; &gt; &gt; &gt; _______________________________________________<br />&gt; &gt; &gt; &gt; &gt; keycloak-user mailing list<br />&gt; &gt; &gt; &gt; &gt; keycloak-user@lists.jboss.org<br />&gt; &gt; &gt; &gt; &gt; https://lists.jboss.org/mailman/listinfo/keycloak-user<br />&gt; &gt; &gt; _______________________________________________<br />&gt; &gt; &gt; keycloak-user mailing list<br />&gt; &gt; &gt; keycloak-user@lists.jboss.org<br />&gt; &gt; &gt; https://lists.jboss.org/mailman/listinfo/keycloak-user<br />&gt; &gt; &gt;</div></font>