初始化Open IDC auth dance时存储GET请求参数以供以后使用

问题描述 投票:0回答:2

我们正在将 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 启动之前存储这些值?

oauth-2.0 openid-connect openid mod-auth-openidc
2个回答
1
投票

应用程序有责任在重定向之前存储位置并在重定向之后恢复它:

  • 单页应用程序可以通过会话存储来管理它,如我的这段代码,因为它们可以控制之前和之后的行为

  • 服务器端 Web 应用程序可能会为您提供类似的选项,将位置存储在仅 HTTP 的 cookie 中,然后在之后恢复,但您需要检查正在使用的特定技术。这是一个众所周知的可用性问题,可能会发生用户界面无法控制的突然重定向,并且深度链接(如您所描述的)可能不起作用。

您需要一个应用程序设计来解决这个问题。出于兴趣,我的最近的博客文章提到了这个问题。


0
投票

我也有同样的问题。 我找到了解决方案。

我使用 AuthNote 来存储自定义参数(自定义身份验证器并将其添加到注册/身份验证流程中),然后重定向到 OIDC 并在用户成功登录后检索此值(检查 ODDC 配置并选择合适的流程)。

欲了解更多详情,您可以关注此讨论:https://keycloak.discourse.group/t/add-more-information-when-login-with-idp/22070

© www.soinside.com 2019 - 2024. All rights reserved.