Freemarker 模板中的 Keycloak 访问 cookie 和/或 url 查询参数

use*_*019 5 freemarker keycloak

我想访问 keycloak freemarker 模板中的一些信息。我正在考虑两种方法。设置 url 参数并在 freemarker 模板中读取它们或将此信息设置为 cookie 并在模板中访问它们。

我已经尝试访问此处此处所述的 url 参数。但两者都不起作用。Keycloak 数据模型不为当前 Url 提供任何 getter。

其中一种方法可能吗?我怎样才能实现我的目标

Ber*_*d_S 5

我遇到了类似的问题,我必须访问自定义 keycloak 登录主题中的查询参数。(使用Keycloak版本2.1.0.Final)

没有查询参数传递到我的登录站点。但我发现里面

org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider
Run Code Online (Sandbox Code Playgroud)

您可以访问以下查询参数:

  • 范围
  • 响应类型
  • 重定向URI
  • 状态
  • 随机数
  • 客户ID
  • 响应模式

这是可以通过使用

UriInfo uriInfo = session.getContext().getUri();
MultivaluedMap<String, String> queryParameters = uriInfo.getQueryParameters();
Run Code Online (Sandbox Code Playgroud)

redirect_uri您可以像这样读取查询参数

String redirectUri = queryParameters.getFirst("redirect_uri")
Run Code Online (Sandbox Code Playgroud)

要将某些数据传递到您的模板,您必须使用

attributes.put("keyToData", dataForTemplate);
Run Code Online (Sandbox Code Playgroud)

在处理模板之前

freeMarker.processTemplate(attributes, Templates.getTemplate(page), theme);
Run Code Online (Sandbox Code Playgroud)

然后在您的模板(例如 template.ftl)中您可以访问提供的数据,例如:

<#if keyToData!false == true> 
    ...
</#if>
Run Code Online (Sandbox Code Playgroud)

不幸的是,我无法访问传递到我的 keycloak/auth端点的自定义查询参数FreeMarkerLoginFormsProvider