1

通常,至少有 2 种使用 Keycloak OpenID Connect 堆栈保护应用程序的选项:

  1. 在使用 Keycloak 的应用程序上使用它adapters(在我的例子中,一个 SPA javascript 前端)
  2. 在 Apache 上使用它mod_auth_openidc

如果我选择使用数字 2,我如何获取用户数据(例如用户名)?

------------------------------------由于@Cyril Dangerville的回答而编辑-----

虽然我了解一般方法,但我的方式似乎非常强迫。

  1. 现在我已通过身份验证,我的请求具有会话 cookie 和访问令牌标头,但由于是初始页面加载,无法访问任何标头

  2. 调用任何受保护的资源以获取访问标头值

  3. 使用访问令牌调用 userinfo 端点(但这是在另一个域上,因此 cookie 不会被提交)

你能帮我解释一下我应该去哪里吗?

4

1 回答 1

2

使用 mod_auth_openidc,您可以将用户数据作为 Apache 环境变量和/或 HTTP 标头传递给应用程序。如果使用 Apache 作为远程应用程序的反向代理 (mod_proxy),后者很有用。mod_auth_openidc 项目的常见问题解答中简要介绍了代理案例。

您可以在配置文件中找到有关如何将 OpenID Connect 令牌声明(包括经过身份验证的用户数据)转换为环境变量/标头的更多详细信息:auth_openidc.conf;特别是两个属性:

  • 对于 REMOTE_USER 变量:OIDCOAuthRemoteUserClaim <claim-name> [<regular-expression>]
  • 对于其他人:OIDCPassClaimsAs [none|headers|environment|both]
于 2018-08-15T19:01:41.847 回答