我有一个多语言的Spring Boot Web应用程序,它与Keycloak(openId)集成在一起。对于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