So, after further investigation I got it working by now. For future ppl
who don't want to search around:
As said, I implemented a custom loginform based on
AbstractUsernameFormAuthenticator. There, in method
validateUsernameAndPassword, where in the end the context gets set by
context.setUser(user);
So, I was particularly interested in the "builtin" field locale, which I
added to the client mappers.
First try was to add this line:
user.setAttribute(UserModel.LOCALE,
Collections.singletonList(context.getHttpRequest().getHttpHeaders().getCookies().get("KEYCLOAK_LOCALE").getValue()));
BUT: This only seems to work in Firefox, for some reason (didnt
investigate further), the KEYCLOAK_LOCALE - Cookie wasn't set in Chrome.
So, to make it work I had to add a custom cookie to my custom theme via
js, which was pretty straightforward. Now this is working and I get the
locale-field populated with the previously chosen value of locale
dropdown when internationalization is enabled. Pretty hard way to go
before I found all this little things out. Actually, I thought the
locale would've been set internally for the user who logs in when
logging in, based on the value of the dropdown, so that I could just add
the mapper and... works. :)
Best regards,
Dominik
Am 07.03.18 um 11:03 schrieb Dominik Guhr:
Hi all,
so I create3d a custom Provider for my legacy db and a custom
authenticator due to special requirements.
Now when I debug in validatePassword in
AbstractUsernameFormAuthenticator.java, I get the user entity with all
the fields I need.
Now my conrecete question is: How do I map these fields to the idtoken
to use them in my application?
I tried adding a User Attribute Mapper to my client directly, but this
gives me a nullpointerexception.
Also, in Admin Interface, the Field "Mappers" is missing from my custom
Provider. Perhaps this is the fault? Did I forget to implement one
thing? I used the storage-jpa example.
Any hints would be highly appreciated. If some code is needed, just ask :-)
Best regards,
Dominik