<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">&lt;<a href="mailto:bburke@redhat.com" target="_blank">bburke@redhat.com</a>&gt;</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">&lt;<a href="mailto:bburke@redhat.com" target="_blank">bburke@redhat.com</a>&gt;</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>
                &gt; Bill,<br>
                &gt;<br>
                &gt; Are you planing to have an option to allow import
                of users with the<br>
                &gt; new user federation SPI? I&#39;m not convinced we
                should completely remove<br>
                &gt; this option.<br>
                &gt;<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&#39;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>&gt; Some use-cases I could imagine:<br>
                &gt;<br>
                &gt; * 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&#39;t currently
              support it doesn&#39;t mean we shouldn&#39;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&#39;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&#39;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&#39;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>