我有一个与Keycloak(openId)集成的多语言Spring Boot Web应用程序。对于Keycloak集成,我使用keycloak-spring-security-adapter。我的应用程序中的语言环境状态由LocaleContextHolder管理。如何将语言环境传递到Keycloak登录页面?我发现这里有一个url参数'kc_locale',但是如果我不想覆盖Keycloak的许多类,我不知道如何传递它。

有没有一种简单的方法可以将语言环境传递给Keycloak登录/ Keycloak适配器?

最佳答案

我知道您在询问有关Spring / Java的信息时,我想给您一些可能会有所帮助的信息

OpenID Connect规范(https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest)具有参数ui_locales,这可能会有所帮助


ui_locales
可选的。最终用户用于用户界面的首选语言和脚本,以BCP47 [RFC5646]的空格分隔列表表示
语言标签值,按首选项排序。例如,值
“ fr-CA fr en”代表在加拿大所说的法语,
然后是法语(没有区域名称),然后是英语
(无区域名称)。如果某些或
OpenID提供程序不支持所有请求的语言环境。


您可以根据以下说明将此参数传递给您的OpenID Connect请求,Keycloak应该接受该参数:https://www.keycloak.org/docs/latest/server_development/#_locale_selector


启用国际化后,将在
以下优先级:

kc_locale query parameter

KEYCLOAK_LOCALE cookie value

User’s preferred locale if a user instance is available

ui_locales query parameter

Accept-Language request header

Realm’s default language

关于locale - 将区域设置从Spring Web App传递到KeyCloak并返回,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51176643/

10-16 17:41