Composer 通过 auth.json 文件配置 HTTP Basic Auth 实现私有 Git 仓库认证,支持 GitHub/GitLab 等多源并存,推荐用 composer config 命令安全生成,并确保域名、协议与权限匹配。

在使用 Composer 安装私有 Git 仓库(如 GitHub、GitLab 或自建 Git 服务器)时,若仓库需要 HTTP Basic Auth 认证(比如用户名 + 密码、Personal Access Token 或 deploy token),你需要让 Composer 在请求时自动携带认证凭据。这通常通过配置 auth.json 文件实现,而不是把密码写进 composer.json。
在 auth.json 中配置 HTTP Basic Auth
Composer 会自动读取项目根目录或全局配置目录下的 auth.json 文件。推荐优先使用项目级配置(更安全、可版本控制 token 类型凭据)。
- 在项目根目录创建
auth.json(与composer.json同级) - 内容格式如下(以 GitHub Personal Access Token 为例):
注意:password 字段实际填的是 token(如 GitHub 的 PAT)、GitLab 的 Personal Access Token,或支持的用户名+密码组合。GitHub 已不接受账号密码登录 API,必须用 token。
为不同域名或子路径单独配置认证
如果你有多个私有源(比如 gitlab.example.com 和 packages.mycompany.com),可在同一 auth.json 中并列配置:
Composer 会根据请求的目标域名自动匹配对应凭据,无需额外声明。
使用 composer config 命令安全添加认证(推荐)
避免手动编辑 JSON 出错,可用 Composer 自带命令生成 auth.json:
- 项目级(当前目录生效):
composer config http-basic.github.com your-username your-token - 全局级(所有项目生效,慎用):
composer config --global http-basic.github.com your-username your-token
执行后 Composer 会自动创建/更新 auth.json,并确保 JSON 格式正确。命令中 github.com 是目标 host,必须与仓库 URL 的 host 完全一致(如 gitlab.com、myrepo.internal)。
验证是否生效 & 排查常见问题
运行 composer update 或 composer install 测试私有包能否正常拉取。如果仍报 401/403 错误,检查以下几点:
- 确认
auth.json文件权限:不应被 Web 服务器公开访问(如放在 webroot 下需屏蔽) - 确认仓库 URL 使用的是 HTTPS 协议(HTTP Basic Auth 不适用于 SSH URL)
- 确认域名拼写完全一致(
gitlab.com≠www.gitlab.com) - GitHub 用户名应填实际用户名,token 必须有
repo权限;GitLab token 需勾选read_repository
基本上就这些。只要凭据正确、host 匹配、协议合规,Composer 就会在每次 HTTP 请求时自动注入 Authorization: Basic ... 头,无需其他干预。










