如果 Keycloak 身份验证是在 Apache 级别而不是 front-end 应用程序上完成的,有没有办法获取用户数据
Is there a way to obtain user data if the Keycloak authentication is done on Apache level, not front-end application
通常,至少有两种使用 Keycloak OpenID Connect 堆栈保护应用程序的选项:
- 在使用 Keycloak
adapters
的应用程序上使用它(在我的例子中,一个 SPA javascript 前端)
- 在 Apache 上使用
mod_auth_openidc
如果我选择使用数字2,如何获取用户数据(例如用户名)?
------------------------根据@Cyril Dangerville 的回答进行编辑---------------- ---
虽然我理解一般的方法,但我的方法似乎很勉强。
现在我已经通过身份验证,我的请求有 session cookie 和访问令牌 header,但由于初始页面加载
调用任何受保护的资源以获得访问权限Header值
使用访问令牌调用 userinfo 端点(但这是在另一个域上,因此不会提交 cookie)
你能帮我解释一下我应该去哪里吗?
使用 mod_auth_openidc,您将用户数据作为 Apache 环境变量 and/or HTTP headers 传递给应用程序。后者在使用 Apache 作为远程应用程序的反向代理时很有用 (mod_proxy)。代理案例在 mod_auth_openidc 项目的 FAQ.
中有简要说明
您可以在配置文件中找到有关如何配置将 OpenID Connect 令牌声明(包括经过身份验证的用户数据)转换为环境 variables/headers 的更多详细信息:auth_openidc.conf;特别是两个属性:
- 对于 REMOTE_USER 变量:
OIDCOAuthRemoteUserClaim <claim-name> [<regular-expression>]
- 对于其他人:
OIDCPassClaimsAs [none|headers|environment|both]
.
通常,至少有两种使用 Keycloak OpenID Connect 堆栈保护应用程序的选项:
- 在使用 Keycloak
adapters
的应用程序上使用它(在我的例子中,一个 SPA javascript 前端) - 在 Apache 上使用
mod_auth_openidc
如果我选择使用数字2,如何获取用户数据(例如用户名)?
------------------------根据@Cyril Dangerville 的回答进行编辑---------------- ---
虽然我理解一般的方法,但我的方法似乎很勉强。
现在我已经通过身份验证,我的请求有 session cookie 和访问令牌 header,但由于初始页面加载
调用任何受保护的资源以获得访问权限Header值
使用访问令牌调用 userinfo 端点(但这是在另一个域上,因此不会提交 cookie)
你能帮我解释一下我应该去哪里吗?
使用 mod_auth_openidc,您将用户数据作为 Apache 环境变量 and/or HTTP headers 传递给应用程序。后者在使用 Apache 作为远程应用程序的反向代理时很有用 (mod_proxy)。代理案例在 mod_auth_openidc 项目的 FAQ.
中有简要说明您可以在配置文件中找到有关如何配置将 OpenID Connect 令牌声明(包括经过身份验证的用户数据)转换为环境 variables/headers 的更多详细信息:auth_openidc.conf;特别是两个属性:
- 对于 REMOTE_USER 变量:
OIDCOAuthRemoteUserClaim <claim-name> [<regular-expression>]
- 对于其他人:
OIDCPassClaimsAs [none|headers|environment|both]
.