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

Storing GET request parameters when initialising Open IDC auth dance for use after

我们正在将 Keycloak 作为 IDP 实施,并将使用它来保护某些应用程序(依赖方)

这些应用可能会使用 mod_auth_openidc 之类的东西,它将使用授权码流程将用户引导至用户将登录的 keycloak,执行 openidc 舞蹈,并最终返回“redirect_uri”。

我们将使用一组参数调用应用程序,例如: https:///some-application/launch?person=12345

redirect_uri 将是 https:///some-application/launch,据我所知,Oauth2 规范非常具体,redirect_uri 应该是静态的,不包含 [=26] =]动态。

所以这意味着登录后请求参数“person=12345”丢失,因为用户被简单地重定向回“https://some-application/launch”

在 OIDC 舞蹈发生之前,建议 pattern/approach 保留此“person=12345”请求参数是什么?

我已经阅读了“state”参数,但我不清楚我们如何使用 mod_auth_openidc 向其中注入任何内容,或者我们如何从中读取任何值? 它是否更像是一个应用程序框架问题 - 某种 controller/server 辅助代码(PHP/c# 等)是否会以某种方式将这些值存储在会话中(但我不清楚他们是否有机会在 mod_auth_openidc 开始了吗?

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

  • 单页应用程序可以像 this code of mine 中一样通过会话存储来管理它,因为它们可以控制

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

您需要一个应用程序设计来解决这个问题。出于兴趣,我的 recent blog post 提到了这个问题。