0

0

composer如何配置auth.json_composer认证文件教程【安全】

尼克

尼克

发布时间:2026-02-26 16:12:01

|

500人浏览过

|

来源于php中文网

原创

auth.json须按优先级放置:项目根目录仅限本项目,用户主目录(权限≤600)供全局使用;结构仅支持http-basic和github-oauth键,域名须精确匹配,用户名密码字段名固定。

composer如何配置auth.json_composer认证文件教程【安全】

auth.json 文件该放哪儿才生效

Composer 查找 auth.json 有固定优先级:当前项目根目录下的 auth.json > 用户主目录的 auth.json(即 ~/.composer/auth.json%APPDATA%\Composer\auth.json)。
多数人配了却没生效,是因为放错了位置——尤其在 CI/CD 或 Docker 环境里,容易误以为写进项目根目录就自动被全局读取,其实它只对当前项目生效;若想让所有项目共用凭据,必须放到用户级路径。

  • 项目级认证:把 auth.json 放在项目根目录(和 composer.json 同级),仅影响本项目
  • 全局认证:放在用户主目录下,但要注意权限 —— Linux/macOS 下需确保文件权限 ≤ 600,否则 Composer 会静默忽略
  • Git 里千万别提交:这个文件含敏感凭据,务必加进 .gitignore,CI 中应通过 secrets 注入而非硬编码

auth.json 的结构不能套用 JSON Schema

auth.json 不是自由格式 JSON,它的顶层键只有两个合法值:http-basicgithub-oauth(已弃用,新版推荐用 token),其他字段会被直接忽略。常见错误是照着 API 文档拼了个“看起来很全”的 JSON,结果认证始终失败。

  • 必须用 http-basic 包裹私仓地址,且域名要精确匹配(比如 repo.example.com<a href="https://www.php.cn/link/87714b79a84563173e3d0088286f51a7">https://www.php.cn/link/87714b79a84563173e3d0088286f51a7</a>
  • 每个仓库独立配置,不支持通配符或子路径继承
  • 用户名密码字段名固定为 usernamepassword,拼错成 userpasswd 都无效
{
  "http-basic": {
    "repo.example.com": {
      "username": "my-token",
      "password": ""
    }
  }
}

注意:很多私仓(如 Nexus、Artifactory)要求将 token 填在 username 字段,password 留空 —— 这不是 bug,是它们的 HTTP Basic 实现方式。

使用 token 替代密码时的常见报错

最典型的是 401 Unauthorized,但 Composer 默认不打印详细响应头,容易误判为网络或配置问题。真实原因常是:

  • token 权限不足(例如只读 token 无法安装 dev 分支包)

  • token 已过期或被吊销(尤其 GitHub Personal Access Token 在 2021 年后强制要求 scope)

  • 私仓启用了双因素认证(2FA)但未在 token 中启用对应权限(如 read:packages

    小麦企业网站展示系统1.1
    小麦企业网站展示系统1.1

    小麦企业网站展示系统介绍:一、安装使用将xiaomai.sql导入数据库二、后台登录后台帐号,密码默认都是admin,config.php 配置文件可根据自行需要修改,IP地址,数据库用户名,密码,及表名后台目录默认admin,支持自行任意修改目录名三、注意事项1 本源码完全免费,采用伪静态,减少不必要的源码重复,速度更快,支持二次开发。2、注明本程序编码为UTF8,如发生乱码,请注意修改编码3、

    下载
  • GitHub 推荐用 fine-grained token,scope 至少勾选 read:packagesdelete:packages(如果要发布)

  • GitLab 私仓需开启 api scope,并确认 token 绑定的 group/project 权限足够

  • 若用 Nexus,检查 realm 是否为 Nexus Realm,且 token 对应用户已分配 nx-repository-view-<em>-</em>-* 角色

CI 环境中 auth.json 的安全注入方式

硬编码、挂载明文文件、甚至 base64 解码都算高危操作。真正安全的做法是利用 CI 自带的 secret 注入机制,在运行时动态生成 auth.json

  • GitHub Actions:用 echo "${{ secrets.COMPOSER_AUTH }}" > auth.json,其中 COMPOSER_AUTH 是预设的 JSON 字符串(注意转义双引号)
  • GitLab CI:通过 before_script 写入,变量值需是合法 JSON 字符串,不是对象
  • Docker 构建阶段:绝不要 COPY 明文 auth.json,改用 --secret + DOCKER_BUILDKIT=1 配合 RUN --mount=type=secret

关键点:任何写入磁盘的操作都要确保文件权限立即设为 600,且构建结束后清理临时文件 —— Composer 本身不会校验权限,但系统级防护(如 umask 或安全扫描)可能拦截。

复杂点在于不同私仓对 token 类型、scope、过期策略、realm 名称的要求差异极大,同一份 auth.json 很难跨平台复用;更麻烦的是,错误信息往往只显示 “Could not fetch” 或 “Invalid credentials”,得靠 composer install -v 才能看到底层 HTTP 状态码。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
composer是什么插件
composer是什么插件

Composer是一个PHP的依赖管理工具,它可以帮助开发者在PHP项目中管理和安装依赖的库文件。Composer通过一个中央化的存储库来管理所有的依赖库文件,这个存储库包含了各种可用的依赖库的信息和版本信息。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

160

2023.12.25

json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

448

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

545

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

324

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

81

2025.09.10

登录token无效
登录token无效

登录token无效解决方法:1、检查token的有效期限,如果token已经过期,需要重新获取一个新的token;2、检查token的签名,如果签名不正确,需要重新获取一个新的token;3、检查密钥的正确性,如果密钥不正确,需要重新获取一个新的token;4、使用HTTPS协议传输token,建议使用HTTPS协议进行传输 ;5、使用双因素认证,双因素认证可以提高账户的安全性。

6461

2023.09.14

登录token无效怎么办
登录token无效怎么办

登录token无效的解决办法有检查Token是否过期、检查Token是否正确、检查Token是否被篡改、检查Token是否与用户匹配、清除缓存或Cookie、检查网络连接和服务器状态、重新登录或请求新的Token、联系技术支持或开发人员等。本专题为大家提供token相关的文章、下载、课程内容,供大家免费下载体验。

838

2023.09.14

token怎么获取
token怎么获取

获取token值的方法:1、小程序调用“wx.login()”获取 临时登录凭证code,并回传到开发者服务器;2、开发者服务器以code换取,用户唯一标识openid和会话密钥“session_key”。想了解更详细的内容,可以阅读本专题下面的文章。

1087

2023.12.21

Golang 实际项目案例:从需求到上线
Golang 实际项目案例:从需求到上线

《Golang 实际项目案例:从需求到上线》以真实业务场景为主线,完整覆盖需求分析、架构设计、模块拆分、编码实现、性能优化与部署上线全过程,强调工程规范与实践决策,帮助开发者打通从技术实现到系统交付的关键路径,提升独立完成 Go 项目的综合能力。

1

2026.02.26

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
WEB前端教程【HTML5+CSS3+JS】
WEB前端教程【HTML5+CSS3+JS】

共101课时 | 9.6万人学习

JS进阶与BootStrap学习
JS进阶与BootStrap学习

共39课时 | 3.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号