<html>
  <head>
    <meta content="text/html; charset=windows-1252"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <p><br>
    </p>
    <br>
    <div class="moz-cite-prefix">On 6/13/16 4:19 AM, Stian Thorgersen
      wrote:<br>
    </div>
    <blockquote
cite="mid:CAJgngAfOfJ2R7iZXqtxNsmHxa-jOLSpY=Rk+SEhT17M3D-FV-w@mail.gmail.com"
      type="cite">
      <div dir="ltr">I've never been a fan of how creating user feds
        outside of the session was done. It's a completely broken
        concept and has several flaws:
        <div><br>
        </div>
        <div>a) KeycloakSession doesn't manage instances - we have
          issues with both multiple instances being created as well as
          instances not being closed.</div>
        <div>b) The code that requires an instance needs to know how to
          create one</div>
        <div>c) No way to create a custom way to configure/setup - the
          model approach may work for some, but what if a custom
          provider wants to store config differently</div>
        <div><br>
        </div>
        <div>With that in mind this needs to be fix and not monkey
          patched.</div>
        <div><br>
        </div>
        <div>When requesting an instance of a user federation it should
          be:</div>
        <div><br>
        </div>
        <div>session.getProvider(UserFederationProvider.class, String
          instanceId)</div>
        <div><br>
        </div>
      </div>
    </blockquote>
      <br>
    <br>
    <br>
    <blockquote
cite="mid:CAJgngAfOfJ2R7iZXqtxNsmHxa-jOLSpY=Rk+SEhT17M3D-FV-w@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div>That's it. It would then be up to the factory of figuring
          out how to instantiate it, not the calling code.</div>
      </div>
      <div class="gmail_extra"><br>
      </div>
    </blockquote>
    A user fed provider is often a generic thing that can be configured
    multiple times for multiple different stores (i.e. LDAP).  So, the
    model is a must.  We don't want people configuring fed providers
    within keycloak-server.json<br>
    <br>
    Model will be used by most (all) providers so it needs to be a
    parameter for creation.  This generic getProvider() method on
    KeycloakSession just doesn't fit for most situations.  Most mappers
    fall into this category too.  I have thought about defining a
    generic ConfigurationModel and datastore that would be used by
    everything (mappers, fed providers, etc.)<br>
    <br>
  </body>
</html>