[keycloak-dev] Designing Auth Server startup from subsystem

Stian Thorgersen stian at redhat.com
Wed Sep 17 08:35:15 EDT 2014



----- Original Message -----
> From: "Stan Silvert" <ssilvert at redhat.com>
> To: "Stian Thorgersen" <stian at redhat.com>
> Cc: keycloak-dev at lists.jboss.org
> Sent: Wednesday, 17 September, 2014 2:23:12 PM
> Subject: Re: [keycloak-dev] Designing Auth Server startup from subsystem
> 
> On 9/17/2014 4:03 AM, Stian Thorgersen wrote:
> >
> > ----- Original Message -----
> >> From: "Stan Silvert" <ssilvert at redhat.com>
> >> To: keycloak-dev at lists.jboss.org
> >> Sent: Wednesday, 17 September, 2014 2:13:07 AM
> >> Subject: Re: [keycloak-dev] Designing Auth Server startup from subsystem
> >>
> >> On 9/16/2014 4:13 PM, Bill Burke wrote:
> >>> On 9/16/2014 4:03 PM, Stan Silvert wrote:
> >>>> *Questions and Design Decisions*
> >>>> The Auth Server WAR will live in its own module.  Is there any reason
> >>>> for it to be in exploded form?
> >>>>
> >>> We have exploded form so that user can plug in their own custom user
> >>> federation providers and other plugin SPIs.  These providers are scanned
> >>> for in the classpath using the META-INF/services pattern.
> >> They could (should?) install the plugin as a module and expose the
> >> services from there.  But for now I'll use exploded form.
> > I don't personally like the current way we add plugins to the
> > auth-server.war. Would it be possible to "deploy" plugins in
> > "deployments"? Alternatively have plugins added as modules, then either
> > have the Keycloak subsystem automatically detect them on startup or
> > require users to register them with Keycloak somehow.
> Anything is possible, but adding as a deployment is definitely not the
> way to go.  Deployments are for end-user applications.

Plugins are end-user things though, and it certainly would make it easier to develop plugins if you could do "mvn wildfly:deploy" ;)

> 
> Adding as a module is the cleanest way to do this but it requires a
> little more than just copying the jar to the file system.  So we're
> talking about either creating a module.xml by hand or using a tool.
> 
> Since there will soon be a keycloak-auth-server module, you could put
> the jar in that module and add an entry in that module.xml. That's
> probably a good compromise.

Whatever we do we should make it simple - we've already had complaints about having to copy a jar into standalone/deployments/auth-server.war/WEB-INF/lib. Creating a module and updating keycloak-auth-server module.xml is even more work. Also what happens when you upgrade the keycloak-auth-server module, wouldn't it loose the dependencies added by users?

> >
> >>>> The Keycloak Subsystem will get a new resource called "auth-server".
> >>>> Right now I only plan to have one attribute called "enabled".  By
> >>>> default, this will be false in a domain environment. You don't want an
> >>>> auth server to boot everywhere you install the keycloak subsystem.  Do
> >>>> we want this to be true for standalone?  In other words, should the auth
> >>>> server automatically boot if the keycloak subsystem is installed on
> >>>> standalone?
> >>>>
> >>> Why wouldn't it boot?  What is the plan for distributing Keycloak?
> >> You don't want the auth server to boot if you are just using the
> >> subsystem for clients.  But now that I think about it, I've answered my
> >> own question.  Whether or not the auth server is enabled is something
> >> that can be defined when you add the Keycloak feature pack.  So you
> >> could set the default to whatever you want depending on the situation.
> >>
> >> I'm not sure I understand your question about distribution.  With the
> >> feature pack, Keycloak can be added when a server is first assembled or
> >> Keycloak can be added on later.  The feature pack lives in the Maven
> >> repo.  For example, the WildFly full build will use the Keycloak FP to
> >> add Keycloak and make it part of its download.  The WildFly web build
> >> probably won't include Keycloak, but you can use the feature pack to add
> >> it later.
> >>
> >> Feature Pack = module references + configuration XML + extra content
> >>>
> >>>> Are there any other attributes to add?  The Keycloak subsystem can do
> >>>> anything it wants to the auth server at deployment time.  It can change
> >>>> context params, add modules, boot in some kind of admin-only mode, or
> >>>> anything else.  Configuration settings on the WAR could be made from
> >>>> standalone.xml, domain.xml, CLI, etc.  Anything you would like the
> >>>> subsystem to do?
> >>>>
> >>> there is a keycloak-server.json file.  Maybe that should be configurable
> >>> in the subsystem too.
> >> OK.  I'll take a look at that.  Should be very similar to what we do for
> >> clients configured by the subsystem.
> > Would it not be best to drop 'keycloak-server.json' and configure it all
> > from standalone/domain.xml?
> For WildFly/EAP deployments, I think this will become the preferred way
> of doing it.   We'll still need keycloak-server.json for other containers.
> >
> >>>
> >>>> Do I need to allow for multiple auth server deployments in the same
> >>>> WildFly instance?  This is quite easy to do.  For the second instance,
> >>>> it would override the module name of the auth server WAR.
> >>>>
> >>> I'm sure there is some weird user that will want to do this.  But I
> >>> don't think this will be the norm, do you?
> >> No, not the norm.  Would there be a scenario where someone wanted to
> >> have prod and test instances of the auth server inside the same WildFly
> >> instance?  Or maybe someone wants a single WildFly instance to host two
> >> auth servers from unrelated entities?
> >>>> What are the plans and considerations for clustered auth server?
> >>>> Anything I should be aware of at this point?
> >>>>
> >>> Might need infinispan configured for clustering going forward.
> >>>
> >>>
> >> _______________________________________________
> >> keycloak-dev mailing list
> >> keycloak-dev at lists.jboss.org
> >> https://lists.jboss.org/mailman/listinfo/keycloak-dev
> >>
> 
> 


More information about the keycloak-dev mailing list