如果Keycloak身份验证是在Apache级别而不是前端应用程序完成的,有没有办法获取用户数据



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

  1. 使用 Keycloakadapters在应用程序上使用它(在我的例子中,是 SPA JavaScript 前端(
  2. 使用mod_auth_openidc在Apache上使用它

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

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

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

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

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

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

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

使用 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].

相关内容

最新更新