<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On 19 August 2016 at 15:52, Bill Burke <span dir="ltr"><<a href="mailto:bburke@redhat.com" target="_blank">bburke@redhat.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000"><span class="">
<p><br>
</p>
<br>
<div>On 8/19/16 2:37 AM, Stian Thorgersen
wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr"><br>
<div class="gmail_extra"><br>
<div class="gmail_quote">On 18 August 2016 at 20:30, Bill
Burke <span dir="ltr"><<a href="mailto:bburke@redhat.com" target="_blank">bburke@redhat.com</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span><br>
On 8/18/16 4:59 AM, Stian Thorgersen wrote:<br>
> Bill,<br>
><br>
> Are you planing to have an option to allow import
of users with the<br>
> new user federation SPI? I'm not convinced we
should completely remove<br>
> this option.<br>
><br>
<br>
</span>The only callback that does not exist in the new
SPI is<br>
validateAndProxy(). With the current federation SPI, the
developer<br>
implements everything themselves for import. There are no<br>
synchronization APIs/SPIs either.<br>
</blockquote>
<div><br>
</div>
<div>Sounds like we're removing built-in features around
synchronization just to make the user have to do
everything themselves.</div>
</div>
</div>
</div>
</blockquote></span>
I think you misinterpreted me, The old User Federation SPI forces
the developer to write all the import code themselves. The old User
Federation SPI does not have any synchronization callbacks, methods
or interfaces other than validateAndProxy(), the logic of which the
user has to write themselves too.<span class=""><br>
<br>
<br>
<blockquote type="cite">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote">
<div> </div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<span>> Some use-cases I could imagine:<br>
><br>
> * Allow users to authenticate even if LDAP server
is down<br>
</span>Our current LDAP provider will not work if LDAP is
down, even with the<br>
import :)<br>
</blockquote>
<div><br>
</div>
<div>Yes, I know. However, the fact that we don't currently
support it doesn't mean we shouldn't in the future.</div>
</div>
</div>
</div>
</blockquote></span>
If the user can only be authenticated via LDAP, an offline mode is
not possible. In other words, if LDAP does not expose the password
of a user (so it can be imported), then offline mode is not
possible. It would only be possible if the user has logged in at
least once, then the validated password could be imported.<br>
<br>
So, do you still think we should support import/offline mode given
all this?</div></blockquote><div><br></div><div>Offline mode - IMO this makes sense even if it requires the user to have logged-in once. At the very least it means that a token can be refreshed when the LDAP server is down.</div><div><br></div><div>Import/decommission - this is been requested by many people, from custom databases as well as LDAP servers. I can see users wanting to migrate over time, so initially they want to keep users in LDAP or the relational database, but once all applications has been converted to Keycloak they no longer need the old stuff and want to decommission. There's probably those that want a batch import of everything in one go. We should make this as easy as possible for users to do. For LDAP it should probably be supported out of the box. With regards to passwords in LDAP we could have an option to initiate the decommissioning that would give an overview over what users have been moved and what hasn't. As user authenticate they would be decommissioned from LDAP. Once all users have migrated the LDAP provider would be removed. We could have options to send out remainders to remaining users as well as an option to simply import without password and require admin or user to reset the password. For relational databases users should be required to write the logic that can read users from the custom tables into the UserModel, but not to write the whole logic around decommissioning and importing users to the Keycloak database.</div><div><br></div><div>One more thing - what about read only modes? I.e. shouldn't we have the option to disable password update, disable profile updates, etc..?</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div bgcolor="#FFFFFF" text="#000000"><span class="HOEnZb"><font color="#888888"><br>
<br>
Bill<br>
</font></span></div>
</blockquote></div><br></div></div>