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.最后,流程在后端停止,我无法回到前端。
- 我的流程正确吗?是否有可能实现这一点(后端的 OIDC 和前端的会话)?
- 我如何包装
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
我正在实施一个与 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.最后,流程在后端停止,我无法回到前端。
- 我的流程正确吗?是否有可能实现这一点(后端的 OIDC 和前端的会话)?
- 我如何包装
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