将语言环境从 Spring Web 应用程序传递到 KeyCloak 并返回

use*_*745 6 locale keycloak

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

\n\n

有没有一种简单的方法可以将区域设置传递给 Keycloak 登录/Keycloak 适配器?

\n

小智 1

虽然我知道您在询问 Spring/Java,但我想为您提供一些可能有帮助的信息

\n\n

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

\n\n
\n

ui_locales\n 可选。最终用户的用户界面首选语言和脚本,表示为以空格分隔的 BCP47 [RFC5646]\n 语言标记值列表,按首选项排序。例如,值\n“fr-CA fr en”表示优先选择在加拿大使用的法语,\n 然后是法语(没有区域指定),最后是英语(没有区域指定)。如果 OpenID 提供程序不支持某些或\n所有请求的区域设置,则不应产生错误。

\n
\n\n

您可以将此参数传递给您的 OpenID Connect 请求,Keycloak 应该遵循它,根据以下描述: https://www.keycloak.org/docs/latest/server_development/#_locale_selector

\n\n
\n

启用国际化后,区域设置将按照以下优先级进行解析:\n

\n\n
kc_locale query parameter\n\nKEYCLOAK_LOCALE cookie value\n\nUser\xe2\x80\x99s preferred locale if a user instance is available\n\nui_locales query parameter\n\nAccept-Language request header\n\nRealm\xe2\x80\x99s default language\n
Run Code Online (Sandbox Code Playgroud)\n
\n