[keycloak-dev] Location of User Federation Provider jar in Keycloak 1.1 Beta-2
Stan Silvert
ssilvert at redhat.com
Fri Jan 16 10:28:37 EST 2015
On 1/16/2015 9:42 AM, Bill Burke wrote:
>
> On 1/16/2015 9:20 AM, Stan Silvert wrote:
>> On 1/16/2015 9:07 AM, Stian Thorgersen wrote:
>>> Currently, I'm not overly happy with releasing 1.1.0.Final and it's down to this issue. I should have raised it before, but it completely slipped my mind :(
>> We did talk about this at great length before. I tried and tried to
>> preserve the "drop it in the file system" approach. It just plain won't
>> work for domains.
>>> IMO we need:
>>>
>>> 1. A usable way to deploy a provider without using the CLI GUI
>>> 2. Ideally be able to deploy a provider with an offline server
>> We have 5 ways to add a provider:
>> 1. CLI
>> 2. CLI GUI
>> 3. CLI script
>> 4. Explode the WAR in the subsystem and drop it in WEB-INF/lib
>> 5. Use the war dist and do it the old way.
>>
> 6. Create a module for your new provider. Import that module (with
> service import too) into the main Keycloak module. Of course this
> requires knowledge of JBoss Modules. Not sure if this would work. You
> tell me.
I tried that and ran into problems. I consulted with Jason and Stuart
to see if there was any way to get it to work. They concluded that it
probably could be made to work but it would require moving everything
out of the WEB-INF/lib and creating modules for each jar. I don't
remember all the details but I can probably find the chat log where we
discussed it.
At the time I didn't want to go that far because pulling everything out
of the WAR and forcing the user to create modules seemed like too
radical of a change. But maybe we need to revisit that. We've already
been talking about moving more stuff into modules. If we decide to not
support the auth server on other platforms then it would make even more
sense to go ahead and do it because we wouldn't be tied to testing
everything as a WAR.
>
> BTW, come to think of it, this upload through CLI just won't work, if
> the provider has even one third-party library dependency.
It still works. You can upload as many provider jars as you want.
>
> Stan, can you explain again the issue with domain mode? Is it that
> you're trying to secure the domain controller itself with keycloak?
>
>
The domain controller won't be secured with Keycloak until we integrate
with Elytron. But having Keycloak compatible with domain mode is a
piece of that puzzle.
Deployment scanners are not allowed in domain mode. You upload to the
domain controller and the deployment is distributed to wherever you want
it to run. So there is no place in the file system where you can just
copy a file and have it become part of the deployment. And as I found
out, there is no way to create your own deployment scanner that will
work. The architecture blocks you from doing that.
Operationally, using overlays is a lot cleaner for upgrades, especially
in domain mode. Your provider jar is the thing most likely to change.
So when it does, you just need to upload the one jar and you are done.
Same is true for keycloak-server.json changes.
If you used a single hacked-up WAR, you would need to rebuild the entire
WAR off line and upload the whole thing. So you would also need to keep
up with manually versioning your own customized WAR.
More information about the keycloak-dev
mailing list