【发布时间】:2020-11-07 20:00:36
【问题描述】:
我正在尝试连接到一个自我管理的 Gitlab 服务器,该服务器在公司网络内的机器上运行从该网络外部。
上下文
要访问此网络网络,用户需要通过反向代理并通过公司的 Azure AD 和 SAML 身份验证登录(下图)。这对于 Gitlab Web 应用程序(图像中的左侧分支)工作正常:在尝试访问网络时,系统会提示用户使用基于浏览器的 SSO。然后重新使用生成的令牌对 Gitlab 实例的用户进行身份验证,其中还设置了通过 Azure OAuth 进行的身份验证。
问题
问题在于使用 git cli 与 git 服务器交互(推送、拉取等)。重定向到 SSO 会触发以下错误:
> git push origin master
fatal: unable to update url base from redirection:
asked for: https://gitserver.companyurl.com/user/repo.git/info/refs?service=git-receive-pack
redirect: https://login.microsoftonline.com/<azure_tenant_id>/saml2?SAMLRequest=<base64encoding of SSO portal>
问题
是否可以配置 git 以触发基于浏览器的 SSO,例如git push,并且上面描述的重定向不会引发异常? 具体来说,以下是理想的:
- 用户执行
git push - 浏览器弹出,通过 Azure AD 请求 SSO
- 请求“进入”公司网络
- 理想情况下:相同的令牌被重新用于对 git 服务器进行身份验证。不过,也可以使用 user:pwd 组合或访问令牌。
-
git push请求已成功完成
我知道这在没有浏览器的无头系统上是行不通的,这是可以接受的限制。
【问题讨论】:
-
Idk 如果这有帮助,但 AWS 使用 git 的凭证助手配置与他们的 SSO 集成:docs.aws.amazon.com/codecommit/latest/userguide/…
-
这真的很有帮助,我不知道这一点!我看看能不能找到类似的 MS Azure。
-
除非你禁用了它,并且你无法让助手工作,否则用户可以使用PATs登录
-
我还在一些 Google Cloud 的 CLI 工具中体验了 CLI 到浏览器再到 CLI 的身份验证流程。我认为你想要的东西是可能的,但我不知道你需要从头开始做多少。
标签: git azure gitlab single-sign-on saml