如何在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 trueuseHttpPath特别重要,因为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的认证类型:
举个例子,如果你的外部URL是git config --global credential.<你的Bitbucket外部URL>.authority "https://login.microsoftonline.com/" git config --global credential.<你的Bitbucket外部URL>.provider "azure"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
相关产品推荐
相关产品推荐

