<font face="arial" size="2"><!--WM_COMPOSE_SIGNATURE_START-->
<p style="margin:0;padding:0;">Thanks Stian. :) Let me first go thru the resources I have on the website. The java source code of the adapter also must be present somewhere for me to have a look I guess?</p>
<p style="margin:0;padding:0;">&nbsp;</p>
<p style="margin:0;padding:0;">Kalinga</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: Tuesday, March 17, 2015 3:14pm<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="SafeStyles1426587612">
<p style="margin:0;padding:0;font-family: arial; font-size: 10pt; word-wrap: break-word;">If you have any more questions feel free to ask, anyone contributing code gets extra questions answered ;)<br /><br /><br />----- Original Message -----<br />&gt; From: "Stian Thorgersen" &lt;stian@redhat.com&gt;<br />&gt; To: "Kalinga Dissanayake" &lt;kalinga@leapset.com&gt;<br />&gt; Cc: keycloak-user@lists.jboss.org<br />&gt; Sent: Tuesday, March 17, 2015 10:41:51 AM<br />&gt; Subject: Re: [keycloak-user] Customization of authentication mechanism and +<br />&gt; <br />&gt; There is no hints regarding adapter logic, but what you'll need is:<br />&gt; <br />&gt; * Configure adapter using keycloak.json<br />&gt; * Implement client side of OAuth2 Authorization Code Grant<br />&gt; 1. Generate a state variable and store in a cookie or session<br />&gt; 2. Redirect to<br />&gt; /{realm}/protocols/openid-connect/auth?client_id=&lt;client&gt;&amp;response_type=code&amp;state=&lt;generate<br />&gt; uuid&gt;&amp;redirect_uri=&lt;callback uri&gt;<br />&gt; 3. Once the user has logged-in it's redirected back to &lt;callback uri&gt; with<br />&gt; a code query param<br />&gt; 4. Use the code query param to obtain a token by posting to<br />&gt; /{realm}/protocols/openid-connect/token the form-data should be<br />&gt; grant_type=authorization_code&amp;code=&lt;code&gt; you also need to include a http<br />&gt; basic authorization header with client id and secret<br />&gt; <br />&gt; Once you've done that you should have a token available to the application.<br />&gt; Then you have to deal with:<br />&gt; <br />&gt; * Refreshing token when expired<br />&gt; * Handle logout events from Keycloak<br />&gt; * Clustering issues<br />&gt; * If you want to support creating rest endpoints in PHP you also need to<br />&gt; support verifying the bearer token included in authorization header, this<br />&gt; can be done by checking the jws signature using the realm public key<br />&gt; <br />&gt; ----- Original Message -----<br />&gt; &gt; From: "Kalinga Dissanayake" &lt;kalinga@leapset.com&gt;<br />&gt; &gt; To: "Kalinga Dissanayake" &lt;kalinga@leapset.com&gt;<br />&gt; &gt; Cc: "Stian Thorgersen" &lt;stian@redhat.com&gt;, "Bill Burke"<br />&gt; &gt; &lt;bburke@redhat.com&gt;, keycloak-user@lists.jboss.org<br />&gt; &gt; Sent: Tuesday, March 17, 2015 10:26:18 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; * I can get a php application in place<br />&gt; &gt; <br />&gt; &gt; Kalinga<br />&gt; &gt; <br />&gt; &gt; -----Original Message-----<br />&gt; &gt; From: "Kalinga Dissanayake" &lt;kalinga@leapset.com&gt;<br />&gt; &gt; Sent: Tuesday, March 17, 2015 2:55pm<br />&gt; &gt; To: "Stian Thorgersen" &lt;stian@redhat.com&gt;<br />&gt; &gt; Cc: "Bill Burke" &lt;bburke@redhat.com&gt;, 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; Thanks again.<br />&gt; &gt; I need to go thru most documentation to get the hang of it. Will do.<br />&gt; &gt; I would love to contribute if u can get a php application in place, is it<br />&gt; &gt; possible for you to direct me to documentation where there are hints<br />&gt; &gt; regarding the adapter logic?<br />&gt; &gt; <br />&gt; &gt; Kalinga<br />&gt; &gt; <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 2:25pm<br />&gt; &gt; To: "Kalinga Dissanayake" &lt;kalinga@leapset.com&gt;<br />&gt; &gt; Cc: "Bill Burke" &lt;bburke@redhat.com&gt;, 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; <br />&gt; &gt; ----- Original Message -----<br />&gt; &gt; &gt; From: "Kalinga Dissanayake" &lt;kalinga@leapset.com&gt;<br />&gt; &gt; &gt; To: "Bill Burke" &lt;bburke@redhat.com&gt;<br />&gt; &gt; &gt; Cc: keycloak-user@lists.jboss.org<br />&gt; &gt; &gt; Sent: Tuesday, March 17, 2015 8:52:12 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; <br />&gt; &gt; &gt; <br />&gt; &gt; &gt; Thanks again for your quick feedbacks.<br />&gt; &gt; &gt; <br />&gt; &gt; &gt; Sorry I have a number of questions so I will be buzzing u guys regularly.<br />&gt; &gt; &gt; <br />&gt; &gt; &gt; I went through the document for the adapters;<br />&gt; &gt; &gt; <br />&gt; &gt; &gt; http://docs.jboss.org/keycloak/docs/1.1.0.Final/userguide/html/ch08.html<br />&gt; &gt; &gt; <br />&gt; &gt; &gt; <br />&gt; &gt; &gt; <br />&gt; &gt; &gt; So lets say I need a php application to be deployed using keycloak as my<br />&gt; &gt; &gt; SSO<br />&gt; &gt; &gt; manager application.<br />&gt; &gt; &gt; <br />&gt; &gt; &gt; So my basic requirement is that user should have the ability to signin<br />&gt; &gt; &gt; via<br />&gt; &gt; &gt; keycloak. I see that there are no dedicated adapters for php (I guess it<br />&gt; &gt; &gt; must be in the works)<br />&gt; &gt; <br />&gt; &gt; We don't have a PHP adapter, and there's no immediate plans to create one.<br />&gt; &gt; You could use:<br />&gt; &gt; <br />&gt; &gt; * JavaScript adapter<br />&gt; &gt; (http://docs.jboss.org/keycloak/docs/1.1.0.Final/userguide/html/ch08.html#javascript-adapter)<br />&gt; &gt; * Proxy<br />&gt; &gt; (http://docs.jboss.org/keycloak/docs/1.1.0.Final/userguide/html/proxy.html)<br />&gt; &gt; <br />&gt; &gt; Alternatively have a look on Google for instructions on using OAuth2 and/or<br />&gt; &gt; OpenID Connect with PHP. Once 1.2.0.Beta1 is released we'll also have a<br />&gt; &gt; OpenID Connect Discovery endpoint, which should make it easier to use other<br />&gt; &gt; OpenID Connect client libraries with Keycloak.<br />&gt; &gt; <br />&gt; &gt; If you're willing to contribute a PHP adapter then let me know and I can<br />&gt; &gt; give<br />&gt; &gt; you more details on what would be required and some hints to get you<br />&gt; &gt; started.<br />&gt; &gt; <br />&gt; &gt; &gt; <br />&gt; &gt; &gt; <br />&gt; &gt; &gt; <br />&gt; &gt; &gt; Is there a guideline that I should follow if I am to do it manually?<br />&gt; &gt; &gt; Basically what I should to do replicate what an adapter does (if I dont<br />&gt; &gt; &gt; want<br />&gt; &gt; &gt; to use any adapters or my apps are mobile based or deployed on containers<br />&gt; &gt; &gt; hat keycloak does not have adapters for). Hope my question is clear.<br />&gt; &gt; &gt; <br />&gt; &gt; &gt; <br />&gt; &gt; &gt; <br />&gt; &gt; &gt; Kalinga<br />&gt; &gt; &gt; <br />&gt; &gt; &gt; <br />&gt; &gt; &gt; <br />&gt; &gt; &gt; <br />&gt; &gt; &gt; -----Original Message-----<br />&gt; &gt; &gt; From: "Bill Burke" &lt;bburke@redhat.com&gt;<br />&gt; &gt; &gt; Sent: Monday, March 16, 2015 7:46pm<br />&gt; &gt; &gt; To: keycloak-user@lists.jboss.org<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; <br />&gt; &gt; &gt; <br />&gt; &gt; &gt; Minimally you need to import username. Probably email too if you want<br />&gt; &gt; &gt; to use any of our email-based features. With UserFederationProvider you<br />&gt; &gt; &gt; can delegate to the third-party storage for other user<br />&gt; &gt; &gt; attributes/metadata.<br />&gt; &gt; &gt; <br />&gt; &gt; &gt; On 3/16/2015 6:01 AM, Stian Thorgersen wrote:<br />&gt; &gt; &gt; &gt; We don't currently have a way to plugin your own authentication<br />&gt; &gt; &gt; &gt; mechanism,<br />&gt; &gt; &gt; &gt; but this is something we'll be adding.<br />&gt; &gt; &gt; &gt; <br />&gt; &gt; &gt; &gt; You have two choices when it comes to users, you can either use our<br />&gt; &gt; &gt; &gt; user<br />&gt; &gt; &gt; &gt; federation provider mechanism to sync between Keycloak and your current<br />&gt; &gt; &gt; &gt; db. Or you can migrate the users fully to the Keycloak db. In either<br />&gt; &gt; &gt; &gt; case<br />&gt; &gt; &gt; &gt; you have an option on overriding how passwords are verified (either<br />&gt; &gt; &gt; &gt; UserFederationProvider or by extending an existing UserProvider). With<br />&gt; &gt; &gt; &gt; the<br />&gt; &gt; &gt; &gt; above authentication mechanism we'll most likely also make the<br />&gt; &gt; &gt; &gt; verification of passwords pluggable which would support different hash<br />&gt; &gt; &gt; &gt; algorithms.<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: keycloak-user@lists.jboss.org<br />&gt; &gt; &gt; &gt;&gt; Sent: Monday, March 16, 2015 10:48:55 AM<br />&gt; &gt; &gt; &gt;&gt; Subject: [keycloak-user] Customization of authentication mechanism 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; Guys,<br />&gt; &gt; &gt; &gt;&gt; <br />&gt; &gt; &gt; &gt;&gt; I need to understand the capability of keycloak with my requirement<br />&gt; &gt; &gt; &gt;&gt; and<br />&gt; &gt; &gt; &gt;&gt; to<br />&gt; &gt; &gt; &gt;&gt; ensure that keycloak is scalable to meet my needs. My main requirement<br />&gt; &gt; &gt; &gt;&gt; is<br />&gt; &gt; &gt; &gt;&gt; to<br />&gt; &gt; &gt; &gt;&gt; integrate keycloak to our system to support SSO hence I need to<br />&gt; &gt; &gt; &gt;&gt; migrate<br />&gt; &gt; &gt; &gt;&gt; my<br />&gt; &gt; &gt; &gt;&gt; existing users. My main concerns;<br />&gt; &gt; &gt; &gt;&gt; <br />&gt; &gt; &gt; &gt;&gt; <br />&gt; &gt; &gt; &gt;&gt; <br />&gt; &gt; &gt; &gt;&gt; 1/ Customize authentication method.<br />&gt; &gt; &gt; &gt;&gt; <br />&gt; &gt; &gt; &gt;&gt; I need to authenticate users similar to what we currently use in our<br />&gt; &gt; &gt; &gt;&gt; production system. In our system, users are identified by username,<br />&gt; &gt; &gt; &gt;&gt; password<br />&gt; &gt; &gt; &gt;&gt; and the pin.<br />&gt; &gt; &gt; &gt;&gt; <br />&gt; &gt; &gt; &gt;&gt; For instance;<br />&gt; &gt; &gt; &gt;&gt; <br />&gt; &gt; &gt; &gt;&gt; User -&gt; jack, password -&gt; pwd, pin -&gt; 50000<br />&gt; &gt; &gt; &gt;&gt; <br />&gt; &gt; &gt; &gt;&gt; User should enter all three to login to the system.<br />&gt; &gt; &gt; &gt;&gt; <br />&gt; &gt; &gt; &gt;&gt; I went through the codebase and I saw that the Authentication Manager<br />&gt; &gt; &gt; &gt;&gt; (which<br />&gt; &gt; &gt; &gt;&gt; is a concrete class) does all the work inside keycloak. I managed to<br />&gt; &gt; &gt; &gt;&gt; customize the frontend with ease, however, in order to support the pin<br />&gt; &gt; &gt; &gt;&gt; in<br />&gt; &gt; &gt; &gt;&gt; the backend seems like I have to customize the AuthenticationManager<br />&gt; &gt; &gt; &gt;&gt; class<br />&gt; &gt; &gt; &gt;&gt; (no direct SPIs).<br />&gt; &gt; &gt; &gt;&gt; <br />&gt; &gt; &gt; &gt;&gt; Although there is a link here;<br />&gt; &gt; &gt; &gt;&gt; <br />&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; <br />&gt; &gt; &gt; &gt;&gt; I cant seem to find anything here which matches the current code base<br />&gt; &gt; &gt; &gt;&gt; (to<br />&gt; &gt; &gt; &gt;&gt; via<br />&gt; &gt; &gt; &gt;&gt; a new authentication method via spis) and the example has been<br />&gt; &gt; &gt; &gt;&gt; removed.<br />&gt; &gt; &gt; &gt;&gt; <br />&gt; &gt; &gt; &gt;&gt; <br />&gt; &gt; &gt; &gt;&gt; <br />&gt; &gt; &gt; &gt;&gt; 2/ Customize password hashes.<br />&gt; &gt; &gt; &gt;&gt; <br />&gt; &gt; &gt; &gt;&gt; We have our own algorithm used to store password hashes. What should I<br />&gt; &gt; &gt; &gt;&gt; do<br />&gt; &gt; &gt; &gt;&gt; to<br />&gt; &gt; &gt; &gt;&gt; add this to keycloak?<br />&gt; &gt; &gt; &gt;&gt; <br />&gt; &gt; &gt; &gt;&gt; I do not know the current passwords of the users already in our<br />&gt; &gt; &gt; &gt;&gt; system,<br />&gt; &gt; &gt; &gt;&gt; so<br />&gt; &gt; &gt; &gt;&gt; when doing the migration i need keyclock to support the current<br />&gt; &gt; &gt; &gt;&gt; algorithm<br />&gt; &gt; &gt; &gt;&gt; we<br />&gt; &gt; &gt; &gt;&gt; use. Can we plugin new hashing algorithms to meet my needs?<br />&gt; &gt; &gt; &gt;&gt; <br />&gt; &gt; &gt; &gt;&gt; <br />&gt; &gt; &gt; &gt;&gt; <br />&gt; &gt; &gt; &gt;&gt; Any other issues I might face?<br />&gt; &gt; &gt; &gt;&gt; <br />&gt; &gt; &gt; &gt;&gt; I feel key cloak is the right choice if the above two questions are<br />&gt; &gt; &gt; &gt;&gt; answered.<br />&gt; &gt; &gt; &gt;&gt; Please let me know.<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; &gt; _______________________________________________<br />&gt; &gt; &gt; &gt; keycloak-user mailing list<br />&gt; &gt; &gt; &gt; keycloak-user@lists.jboss.org<br />&gt; &gt; &gt; &gt; https://lists.jboss.org/mailman/listinfo/keycloak-user<br />&gt; &gt; &gt; &gt; <br />&gt; &gt; &gt; <br />&gt; &gt; &gt; --<br />&gt; &gt; &gt; Bill Burke<br />&gt; &gt; &gt; JBoss, a division of Red Hat<br />&gt; &gt; &gt; http://bill.burkecentral.com<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; <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; _______________________________________________<br />&gt; keycloak-user mailing list<br />&gt; keycloak-user@lists.jboss.org<br />&gt; https://lists.jboss.org/mailman/listinfo/keycloak-user<br />&gt; </p>
</div></font>