我们正在将 Keycloak 作为 IDP 实施,并将使用它来保护某些应用程序(依赖方)
这些应用程序可能会使用 mod_auth_openidc 之类的东西,它将使用授权代码流程引导用户到用户将登录的 keycloak,进行 openidc 舞蹈,并最终返回到“redirect_uri”。
我们将使用一组参数调用应用程序,例如: https://some-application/launch?person=12345
redirect_uri 将是 https://some-application/launch,据我了解,Oauth2 规范非常具体,redirect_uri 应该是静态的,并且不包含参数/动态。
因此,这意味着登录后请求参数“person=12345”会丢失,因为用户只是被重定向回“https://some-application/launch”
在 OIDC 舞蹈发生之前保留此“person=12345”请求参数的建议模式/方法是什么?
我已经阅读了有关“state”参数的信息,但我不清楚我们如何使用 mod_auth_openidc 向其中注入任何内容,或者我们如何从中读取任何值? 这是否更像是一个应用程序框架问题 - 某种控制器/服务器端代码(PHP/c# 等)是否会以某种方式将这些值存储在会话中(但我不清楚它们是否有机会在 mod_auth_openidc 启动之前存储这些值?
我也有同样的问题。 我找到了解决方案。
我使用 AuthNote 来存储自定义参数(自定义身份验证器并将其添加到注册/身份验证流程中),然后重定向到 OIDC 并在用户成功登录后检索此值(检查 ODDC 配置并选择合适的流程)。
欲了解更多详情,您可以关注此讨论:https://keycloak.discourse.group/t/add-more-information-when-login-with-idp/22070