composer_AUTH是Composer用于安全认证的环境变量,支持http-basic、github-oauth等多种私有仓库认证方式,通过jsON格式配置凭据,可设于命令行、shell或CI/CD中,避免敏感信息泄露。

在使用 Composer 时,如果需要访问私有仓库(如私有的 Packagist、github、gitlab 或 Nexus 等),通常需要进行身份认证。通过设置 COMPOSER_AUTH 环境变量,可以安全地提供认证信息,而无需将凭据写入 composer.json 文件中。
什么是 COMPOSER_AUTH?
COMPOSER_AUTH 是一个环境变量,Composer 启动时会自动读取它,并将其内容解析为 JSON 格式的认证配置。它可以包含 HTTP 基本身份验证、OAuth Token、Bearer Token 等信息,适用于多种类型的私有源。
支持的认证类型
COMPOSER_AUTH 支持以下几种常见的认证方式:
- http-basic:用于需要用户名和密码的私有仓库(如私有 Satis 或 Artifactory)
- github-oauth:用于 GitHub 私有仓库(推荐使用 Personal access Token)
- gitlab-token:用于 GitLab 私有项目
- bitbucket-oauth:用于 Bitbucket
如何配置 COMPOSER_AUTH 环境变量
你可以通过命令行、shell 配置文件、CI/CD 环境等方式设置该变量。以下是具体操作方法:
1. 命令行临时设置(linux/macOS)
在终端中执行以下命令:
export COMPOSER_AUTH='{"http-basic": {"example.com": {"username": "user", "password": "pass"}}, "github-oauth": {"github.com": "your_github_token"}}'
之后运行 composer install 或 composer update 即可自动使用认证信息。
2. windows 命令行设置
在 CMD 中:
set COMPOSER_AUTH={"http-basic": {"example.com": {"username": "user", "password": "pass"}}, "github-oauth": {"github.com": "your_token"}}
在 PowerShell 中:
$env:COMPOSER_AUTH='{"http-basic": {"example.com": {"username": "user", "password": "pass"}}, "github-oauth": {"github.com": "your_token"}}'
3. 永久配置(添加到 shell 配置文件)
编辑 ~/.bashrc、~/.zshrc 或 ~/.profile:
echo 'export COMPOSER_AUTH='''{"github-oauth": {"github.com": "ghp_your_real_token"}}'''' >> ~/.zshrc source ~/.zshrc
注意:不要将敏感信息提交到版本控制系统中。
4. 在 CI/CD 中配置(如 GitHub Actions)
在 .github/workflows/ci.yml 中:
env: COMPOSER_AUTH: '{"github-oauth": {"github.com": "${{ secrets.GITHUB_TOKEN }}"}}'
确保将 token 添加到项目的 Secrets 中。
常见示例
仅配置 GitHub Token:
{"github-oauth": {"github.com": "ghp_abc123..."}}
配置私有仓库的用户名密码:
{ "http-basic": { "packages.example.com": { "username": "admin", "password": "secret123" } } }
同时配置多个源:
{ "http-basic": { "repo.example.com": { "username": "user", "password": "pass" } }, "github-oaut h": { "github.com": "ghp_token_here" }, "gitlab-token": { "gitlab.com": "glpat-xxxxx" } }
注意事项
- 确保 JSON 格式正确,避免多余的逗号或引号错误
- 在共享环境中(如 CI),使用 secret 管理工具存储 token
- GitHub 推荐使用 Fine-grained Personal Access Token 或 Classic Token
- COMPOSER_AUTH 优先级高于
auth.json文件,但不会覆盖显式配置
基本上就这些。合理使用 COMPOSER_AUTH 可以让你更安全、灵活地管理私有包依赖。


