[keycloak-dev] Theme resource provider - ability for custom authenticators to load additional templates

Marek Posolda mposolda at redhat.com
Thu Feb 8 04:37:53 EST 2018


Good stuff.

I wonder if we can improve usability even more. As people will need to 
implement ThemeResourceProvider. And IMO in 95% of cases, they will use 
templates from the JAR with their provider, so they would need to add 
some boilerplate code like this: 
https://github.com/stianst/keycloak-experimental/blob/master/fido-u2f/u2f-ejb/src/main/java/org/keycloak/experimental/u2f/U2FThemeResourceProvider.java#L20-L22 
.

I am thinking if we can add default implementation of 
ThemeResourceProvider, which will scan classpath of the deployed 
provider archives automatically and find the resources from there? 
People won't need to implement their own ThemeResourceProvider, they 
will just need to add their templates into some directory like 
"src/main/resources/themes" or something like that. Maybe we can achieve 
this by adding ProviderEvent, which will be triggered on deploy/undeploy 
of any provider? Default ThemeResourceProvider will be able to listen to 
that and register/unregister classloaders of deployed providers 
automatically.

WDYT?
Marek

On 06/02/18 20:03, Stian Thorgersen wrote:
> On 6 February 2018 at 18:42, Dmitry Telegin <mitya at cargosoft.ru> wrote:
>
>> Hi Stian, nice feature! Is it limited to login themes?
>>
> Nah, it's a generic theme feature.
>
> Not sure I can see any use-cases other than custom providers that need
> additional templates though. At the moment I can only think of
> authenticators and required actions.
>
> Did you have any other use-cases in mind?
>
>
>> BTW the correct link is https://github.com/stianst/
>> keycloak-experimental/tree/master/fido-u2f
>>
>> Also nice to hear that the work has finally started on U2F, it's indeed a
>> must-have feature today. Is it slated for 4.0.0?
>>
>> Dmitry
>>
>> I was experimenting with a custom authenticator and found it annoying that
>> I had to copy templates manually to the themes directory.
>>
>> To resolve this I added a Theme Resource Provider SPI.
>>
>> A theme resource provider can provide additional templates and/or resources
>> alongside the custom authenticator.
>>
>> Themes are always searched first for templates and resources. Template
>> resource providers are only searched if not found in themes. This is
>> important as it allows a theme to override the templates and/or resources
>> provided by a theme resource provider.
>>
>> The code is ready in the PR https://github.com/keycloak/keycloak/pull/4971
>>
>> For an example on how it's used take a look at
>> https://github.com/stianst/keycloak-experimental/tree/master/u2f.
>> _______________________________________________
>> keycloak-dev mailing list
>> keycloak-dev at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/keycloak-dev
>>
>>
> _______________________________________________
> 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