后端OIDC,从前端重定向



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

我已经将我的后端配置为web_app,并且这部分正在工作。进入localhost:8080/auth(后端)后,Quarkus将我重定向到GitLab,登录后,我被重定向回后端,返回UserInfo作为JSON。

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

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

经过一些研究,尝试和失败,准备实施。

:

  • 前端显示GitLab登录按钮
  • 按钮是一个链接到后台与额外的HTTP头'X-Requested-With': 'JavaScript'
  • 如果用户没有被认证,后端返回499代码,前端使用window.location.assign重定向到GitLab登录页面
  • GitLab重定向到后端(令牌存储在那里)
  • 后端重定向到前端(此时后端有用户的令牌,前端有来自后端会话的cookie)

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

实现- https://gitlab.com/hakkie-it/time-tracker/time-tracker

最新更新