[keycloak-user] Different theme for each client

Stian Thorgersen sthorger at redhat.com
Wed Jan 17 06:49:19 EST 2018


My branch has now been updated to also include ability to override template
on a client or client template.

It's here: https://github.com/stianst/keycloak/tree/KEYCLOAK-6289 if anyone
wants to take a look

On 17 January 2018 at 12:38, Stian Thorgersen <sthorger at redhat.com> wrote:

> [Added the list back]
>
> To reply to everyone just do "reply all" and it should include the list.
>
> On 17 January 2018 at 10:29, <eric.kapitza at web.de> wrote:
>
>> Hello Stian, Hello Marek,
>>
>> I really love that you want to developt this feature! :)
>>
>> I think it's good if you can set the theme per client, with a fallback to
>> the default theme. This is probably what most people need when they look
>> for this feature.
>>
>> Btw how do I correctly reply to somebody like you did, so everyone will
>> get the new message? Must I just send a new mail to the email list with the
>> same title?
>>
>> One other question, maybe you know it, do you think it is right now
>> technically possible to use keycloak login page within an IFrame in our
>> application with JS-Adapter?
>>
>> Eric
>> *Gesendet:* Mittwoch, 17. Januar 2018 um 09:38 Uhr
>> *Von:* "Stian Thorgersen" <sthorger at redhat.com>
>> *An:* "Marek Posolda" <mposolda at redhat.com>
>> *Cc:* keycloak-user <keycloak-user at lists.jboss.org>
>> *Betreff:* Re: [keycloak-user] Different theme for each client
>> On 17 January 2018 at 09:35, Marek Posolda <mposolda at redhat.com> wrote:
>>
>> > On 17/01/18 09:03, Stian Thorgersen wrote:
>> >
>> > Added a public ThemeSelectorSPI [1] that allows adding custom logic for
>> > selecting what theme to use. The default implementation is very simple
>> at
>> > the moment [2]. It simply looks for the realm setting and fallbacks to
>> the
>> > default if not set.
>> >
>> > Changing the selector is a global thing and there is no mechanism to
>> > configure a separate selector for a realm. That's something we could
>> > consider adding later if needed.
>> >
>> > The question is should we provide the ability to set the theme
>> per-client
>> > or is that actually quite cumbersome to use? There could be hundreds of
>> > clients.
>> >
>> > I think that yes. It can be cumbersome, but this applies for many
>> > client-specific settings. For example you may have some custom
>> > protocolMapper, which you want to use for more clients and then you also
>> > need to edit protocolMappers in all clients to add this custom
>> > protocolMapper.
>> >
>> > We can also support theme per clientTemplate, so if client doesn't have
>> > theme set, it can try the theme from clientTemplate and fallback to
>> realm
>> > and finally to default if nothing is set.
>> >
>>
>> OK. I guess implementation should be pretty straightforward as both
>> clients
>> and client templates have attributes.
>>
>>
>> >
>> >
>> > Marek
>> >
>> >
>> > [1] https://github.com/stianst/keycloak/tree/KEYCLOAK-6289
>> > [2] https://github.com/stianst/keycloak/blob/KEYCLOAK-6289/servi
>> ces/src/
>> > main/java/org/keycloak/theme/DefaultThemeSelectorProvider.java#L17
>> >
>> > On 17 January 2018 at 08:54, Marek Posolda <mposolda at redhat.com> wrote:
>> >
>> >> +1 to handle on the client. Seems to be better than handle in the theme
>> >> itself.
>> >>
>> >> Marek
>> >>
>> >>
>> >> On 17/01/18 08:19, Stian Thorgersen wrote:
>> >>
>> >>> I've started work on this as I needed a simple dev task to wake up ;)
>> >>>
>> >>> https://issues.jboss.org/browse/KEYCLOAK-3370
>> >>>
>> >>> On 16 January 2018 at 17:06, Josh Cain <jcain at redhat.com> wrote:
>> >>>
>> >>> +1 for that solution, would make some of what we're looking to do in
>> the
>> >>>> near future *way* cleaner!
>> >>>>
>> >>>> Josh Cain
>> >>>> Senior Software Applications Engineer, RHCE
>> >>>> Red Hat North America
>> >>>> jcain at redhat.com IRC: jcain
>> >>>>
>> >>>> On 01/16/2018 08:54 AM, Stian Thorgersen wrote:
>> >>>>
>> >>>>> It makes sense to add two options:
>> >>>>>
>> >>>>> 1. Expose client attributes to theme. That would allow setting an
>> >>>>>
>> >>>> attribute
>> >>>>
>> >>>>> on a specific client or a client template to then have some
>> conditions
>> >>>>> to
>> >>>>> provide variants within a theme.
>> >>>>> 2. Allow overriding theme in client and client template. No need to
>> add
>> >>>>> something additional to themes as they can already be extended. We
>> >>>>> simply
>> >>>>> need to allow users to specify a different theme. In this case we
>> may
>> >>>>>
>> >>>> also
>> >>>>
>> >>>>> want to add a ThemeSelectorSPI that would allow some custom logic to
>> >>>>>
>> >>>> select
>> >>>>
>> >>>>> the theme (could be based on headers for instance in the case of a
>> >>>>> mobile
>> >>>>> theme).
>> >>>>>
>> >>>>> On 16 January 2018 at 14:09, Marek Posolda <mposolda at redhat.com>
>> >>>>> wrote:
>> >>>>>
>> >>>>> We can probably do some builtin support for clients into the themes
>> >>>>>> itself. Doing it properly may take few days. Depends if we want to
>> >>>>>> support that. AFAIR Stian didn't like that, but to me it makes
>> sense
>> >>>>>> that some people want different look&feel based on client.
>> >>>>>>
>> >>>>>> For example template file can be lookup from the directory with the
>> >>>>>> clientId (EG. theme/my-theme/login/customer-portal/login.ftl ).
>> If it
>> >>>>>> doesn't exists, then fallback to the current location without
>> >>>>>> "clientId"
>> >>>>>> directory. Maybe something similar would be needed for the CSS
>> files
>> >>>>>> and
>> >>>>>> other resources.
>> >>>>>>
>> >>>>>> But for some very basic cases, people can probably already handle
>> it
>> >>>>>> by
>> >>>>>> add some "if" into the freemarker template itself and use different
>> >>>>>> CSS
>> >>>>>> styles based on the client or something like this.
>> >>>>>>
>> >>>>>> Marek
>> >>>>>>
>> >>>>>>
>> >>>>>> On 16/01/18 00:09, Bill Burke wrote:
>> >>>>>>
>> >>>>>>> I wonder how hard it would be to implement?
>> >>>>>>>
>> >>>>>>> On Mon, Jan 15, 2018 at 3:22 PM, Marek Posolda <
>> mposolda at redhat.com>
>> >>>>>>>
>> >>>>>> wrote:
>> >>>>>>
>> >>>>>>> I think that Freemarker theme (at least login theme) has access to
>> >>>>>>>> ClientBean through the "client" expression . So it's likely
>> already
>> >>>>>>>> possible to do some hacking in the template itself and provide
>> >>>>>>>>
>> >>>>>>> different
>> >>>>
>> >>>>> CSS according to the client used. Not very nice, but likely should
>> be
>> >>>>>>>> somehow possible.
>> >>>>>>>>
>> >>>>>>>> Marek
>> >>>>>>>>
>> >>>>>>>> On 15/01/18 18:26, Josh Cain wrote:
>> >>>>>>>>
>> >>>>>>>>> Was originally discussed here:
>> >>>>>>>>> http://lists.jboss.org/pipermail/keycloak-user/2016-
>> >>>>>>>>>
>> >>>>>>>> January/004288.html
>> >>>>>>
>> >>>>>>> And I asked the same question again here:
>> >>>>>>>>> http://lists.jboss.org/pipermail/keycloak-user/2016-July/007
>> >>>>>>>>> 052.html
>> >>>>>>>>>
>> >>>>>>>>> But feel free to keep bumping. It's a feature I'd like to see
>> >>>>>>>>> anyway
>> >>>>>>>>>
>> >>>>>>>> ;-)
>> >>>>>>
>> >>>>>>> Josh Cain
>> >>>>>>>>> Senior Software Applications Engineer, RHCE
>> >>>>>>>>> Red Hat North America
>> >>>>>>>>> jcain at redhat.com IRC: jcain
>> >>>>>>>>>
>> >>>>>>>>> On 01/15/2018 06:10 AM, eric.kapitza at web.de wrote:
>> >>>>>>>>>
>> >>>>>>>>>> _______________________________________________
>> >>>>>>>>>> keycloak-user mailing list
>> >>>>>>>>>> keycloak-user at lists.jboss.org
>> >>>>>>>>>> https://lists.jboss.org/mailman/listinfo/keycloak-user
>> >>>>>>>>>>
>> >>>>>>>>>> _______________________________________________
>> >>>>>>>>> keycloak-user mailing list
>> >>>>>>>>> keycloak-user at lists.jboss.org
>> >>>>>>>>> https://lists.jboss.org/mailman/listinfo/keycloak-user
>> >>>>>>>>>
>> >>>>>>>> _______________________________________________
>> >>>>>>>> keycloak-user mailing list
>> >>>>>>>> keycloak-user at lists.jboss.org
>> >>>>>>>> https://lists.jboss.org/mailman/listinfo/keycloak-user
>> >>>>>>>>
>> >>>>>>>
>> >>>>>>> _______________________________________________
>> >>>>>> keycloak-user mailing list
>> >>>>>> keycloak-user at lists.jboss.org
>> >>>>>> https://lists.jboss.org/mailman/listinfo/keycloak-user
>> >>>>>>
>> >>>>>> _______________________________________________
>> >>>>> keycloak-user mailing list
>> >>>>> keycloak-user at lists.jboss.org
>> >>>>> https://lists.jboss.org/mailman/listinfo/keycloak-user
>> >>>>>
>> >>>>>
>> >>>> _______________________________________________
>> >>>> keycloak-user mailing list
>> >>>> keycloak-user at lists.jboss.org
>> >>>> https://lists.jboss.org/mailman/listinfo/keycloak-user
>> >>>>
>> >>>> _______________________________________________
>> >>> keycloak-user mailing list
>> >>> keycloak-user at lists.jboss.org
>> >>> https://lists.jboss.org/mailman/listinfo/keycloak-user
>> >>>
>> >>
>> >>
>> >>
>> >
>> >
>> _______________________________________________
>> keycloak-user mailing list
>> keycloak-user at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/keycloak-user
>>
>
>


More information about the keycloak-user mailing list