0

我正在尝试使用 mod_auth_openidc 配置 Keycloak。我正在使用 Apache 2.4 和简单的 Java servlets/html 页面。我有 Keycloak 对用户进行身份验证并重定向到受保护的资源。现在,我想访问用户个人资料。我假设我必须从 URL 查询字符串中提取“代码”,然后通过调用其中一个 Keycloak API 将其交换为 id_token。那是对的吗?我不知道如何获得这个“代码”。我在 URL 中看到了命中我的 OIDCRedirectURI 的代码。但我不知道如何做到这一点。如果我的 OIDCRedirectURI 是一个 servlet,即使我看到重定向到 servlet,doGet 方法也没有被命中,因此我无法访问请求并访问查询参数。我相信我做错了什么。您能帮我弄清楚如何获取代码并最终获取 id_token 吗?谢谢!

4

2 回答 2

1

您无法获取“代码”,也不需要在受保护的应用程序中执行此操作,因为mod_auth_openidc将其交换为 ID 令牌而不是您的应用程序(这是一项mod_auth_openidc工作)。如果要访问 ID 令牌中的用户配置文件,可以在 HTTP 请求标头中找到它们。使用下图中的前缀mod_auth_openidc将声明自动扩展为 HTTP 请求标头。OIDC_CLAIM_

在此处输入图像描述

于 2018-07-11T01:04:08.050 回答
0

一些 Apache 安全模块会默默地删除带有下划线的标头...

  • 首先确保 OIDCPassClaimsAs 参数在 Apache 配置文件中设置为“headers”或“both”。
  • 然后通过 OIDCClaimPrefix 将 OIDC 声明前缀更改为“OIDC-”

所有声明都应出现在请求标头中。访问令牌除外,因为它的前缀在 mod_auth_openidc 代码中硬编码(在当前版本中)

于 2019-09-19T09:12:47.890 回答