OIDC 在后端,从前端重定向

OIDC on the backend, redirect from frontend

我正在实施一个与 GitLab 集成的小工具作为身份提供者。 React 在前端,Quarkus 在后端。

我已将后端配置为 web_app,这部分工作正常。输入 localhost:8080/auth(后端)后,Quarkus 将我重定向到 GitLab,登录后我被重定向回后端,其中 returns UserInfo 为 JSON。

现在我想添加基于会话(cookie)的前端部分。根据 docs 我设置 quarkus.oidc.authentication.java-script-auto-redirect=false 并且我的前端接收到 499 代码然后使用 window.location.assign 浏览器打开后端 -> GitLab -> 登录 -> UserInfo as JSON.最后,流程在后端停止,我无法回到前端。

  1. 我的流程正确吗?是否有可能实现这一点(后端的 OIDC 和前端的会话)?
  2. 我如何包装 window.location.assign("http://localhost:8080/auth") 来保存前端上下文(我需要使用它,否则重定向到 GitLab 将因 CORS 而失败)?

经过一些研究、尝试和失败,实施就绪。

流量:

  • 前端显示使用 GitLab 登录的按钮
  • 按钮是一个 link 到后端的附加 HTTP Header 'X-Requested-With': 'JavaScript'
  • 如果用户未通过身份验证,后端 returns 499 代码和前端使用 window.location.assign 重定向到 GitLab log-in 页面
  • GitLab 重定向到后端(令牌存储在那里)
  • 后端重定向到前端(此时后端有用户的令牌,前端有来自后端的 cookie session)

前端和后端都在同一个域上工作。

实施 - https://gitlab.itersive.com/itersive/public/time-tracker