You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MFA(Azure应用程序代理)环境下使用Git并借助Git Credential Manager处理MFA?

解决Bitbucket Server(Azure应用代理发布)配合Microsoft Git Credential Manager处理MFA的问题

我完全懂你现在的状况——已经把内网的Bitbucket Server通过Azure应用代理发布,实现了带MFA的外网访问,Web端跑起来没问题,手动复制Web会话的Cookie到http.cookiefile也能让Git正常工作,但就是没法让Microsoft Git Credential Manager(GCM)自动搞定MFA这一步。下面我给你梳理几个关键的配置步骤和排查点,应该能帮你解决这个问题:

一、先把GCM的基础配置和版本搞定

  • 首先确认你装的是最新版的Microsoft GCM,旧版本对Azure应用代理的MFA支持可能有bug。你可以在命令行里敲git credential-manager version检查版本,要是不是最新的,去官方渠道更个新就行。
  • 给Git配置GCM用Azure AD认证模式,执行这两条命令:
    git config --global credential.azureAuthority "https://login.microsoftonline.com/"
    git config --global credential.useHttpPath true
    
    这里的useHttpPath特别重要,因为Bitbucket的Git路径里包含仓库的具体信息,GCM需要这个才能正确关联对应的凭据。

二、确保Azure应用代理和Bitbucket的配置兼容

  • 检查Azure应用代理的转发Cookie设置:一定要开启HttpOnly和Secure属性的Cookie转发,因为GCM在和Azure AD、Bitbucket交互的时候需要这些Cookie。
  • 核对Bitbucket Server的基础URL:必须和Azure应用代理发布的外部URL完全一致(包括https://前缀和完整域名)。要是Bitbucket内部配置的是内网URL,GCM会因为URL不匹配,没法正确处理凭据。你可以去Bitbucket的管理后台,在「服务器设置」里找到「基础URL」修改。

三、让GCM识别Bitbucket的Azure AD认证流程

  • 因为你的Bitbucket是通过Azure应用代理做的MFA,得告诉GCM这个服务是Azure AD保护的。给Bitbucket的外部URL单独配置GCM的认证类型:
    git config --global credential.<你的Bitbucket外部URL>.authority "https://login.microsoftonline.com/"
    git config --global credential.<你的Bitbucket外部URL>.provider "azure"
    
    举个例子,如果你的外部URL是https://bitbucket-contoso.com,那命令就是:
    git config --global credential.https://bitbucket-contoso.com.authority "https://login.microsoftonline.com/"
    git config --global credential.https://bitbucket-contoso.com.provider "azure"
    
  • 另外,暂时禁用之前手动配置的http.cookiefile,因为它会和GCM的凭据管理冲突。执行这条命令取消设置:git config --global --unset http.cookiefile,等测试成功后要是需要再恢复就行。

四、测试认证流程

  • 现在试试执行一个Git操作,比如git clone <你的Bitbucket仓库外部URL>,这时候GCM应该会弹出一个窗口,引导你完成Azure AD的MFA验证。
  • 如果没弹出窗口,用GIT_TRACE=1 git clone <仓库URL>查看详细的认证日志,看看哪里卡住了——比如是不是有错误提示找不到Azure AD配置,或者URL不匹配。

常见排查点

  • 如果GCM弹出窗口但验证失败,检查Azure应用代理的用户分配:确保你的账号被分配到了这个应用代理的权限,而且MFA策略已经正确应用到该账号。
  • 确认Bitbucket Server的认证方式:要是Bitbucket本身还有自己的认证体系,得确保它和Azure应用代理的认证兼容——最好让Azure应用代理处理所有的MFA和身份验证,Bitbucket内部用集成认证或者信任Azure AD的身份。

内容的提问来源于stack exchange,提问作者Jan Nylund

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:52:23