lowelllab / hyperf-dpop-workspace
Development and verification workspace for a Hyperf DPoP extension.
Package info
github.com/lowelllab/hyperf-dpop
Type:project
pkg:composer/lowelllab/hyperf-dpop-workspace
Requires
- php: ^8.5
- hyperf/command: ~3.2.0
- hyperf/di: ~3.2.0
- hyperf/framework: ~3.2.0
- lowelllab/dpop-core: ^0.1@dev
- lowelllab/hyperf-dpop: ^0.1@dev
Requires (Dev)
- hyperf/devtool: ~3.2.0
- hyperf/redis: ~3.2.0
- phpstan/phpstan: ^2.3
- phpunit/phpunit: ^13.4
Suggests
None
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-11-03 03:05:58 UTC
README
为 Hyperf 应用提供基于 RFC 9449 的 DPoP(Demonstrating Proof of Possession)服务端认证扩展。通过校验客户端持钥证明,将访问令牌与客户端公钥绑定,降低令牌泄露后被直接冒用的风险。
核心功能
- 证明验证:支持 ES256 签名,校验 HTTP 方法、目标 URI、公钥、时间窗口及访问令牌摘要
ath。 - 令牌密钥绑定:支持 JWT 和不透明令牌,通过可替换的解析接口接入现有认证体系,校验令牌与证明公钥的绑定关系。
- Nonce 挑战:提供必需的 nonce 校验、挑战响应及密钥轮换,按安全域、用途、origin 和公钥指纹隔离。
- 原子防重放:默认使用 MySQL 独立事务和唯一约束登记证明,也支持 Redis 原子防重放驱动;业务回滚不释放已登记的证明。
- 签发与刷新:提供令牌签发、刷新时的证明验证辅助接口,刷新时校验原有密钥绑定。
- Hyperf 中间件:通过路由中间件保护资源,使用请求属性传递认证结果,隔离不同请求的身份信息。
- 认证资源控制:提供 Redis 共享准入预算、来源限流和进程内验签并发限制,并在异常或协程取消时释放资源。
- 配置与诊断:提供配置、DDL 及 HAProxy 网关模板发布、启动检查和只读
dpop:doctor自检命令。 - 可扩展接口:支持替换令牌绑定解析、公开 URI 解析、重放存储、准入预算、错误响应及认证指标采集。
组件结构
| 组件 | 功能 |
|---|---|
lowelllab/dpop-core |
独立于框架的协议核心,负责证明验证、nonce、时间策略和防重放协调 |
lowelllab/hyperf-dpop |
Hyperf 适配层,提供依赖注入、中间件、存储驱动、配置及诊断命令 |
业务项目通过 Hyperf 扩展接入,协议核心作为依赖自动引入。
运行环境
- PHP 8.5、Hyperf 3.2。
- OpenSSL 扩展;默认 MySQL 防重放驱动需要 PDO MySQL 扩展。
- 默认存储组合为 MySQL 防重放账本与 Redis 共享准入预算。
安装
composer require "lowelllab/hyperf-dpop:^0.1"
默认从Packagist安装正式版并自动引入协议核心,无需path/VCS仓库或开发稳定性设置。目标生产拓扑验收及独立安全审计仍须按部署范围完成。接入前按网关说明部署入口检查、剥离请求尾部并隔离后端。
使用边界
扩展负责 HTTP DPoP 证明验证。账号认证、令牌签发、会话撤销和业务权限由宿主应用实现,通信仍需使用 HTTPS。DPoP 证明不保护请求 body 和 query 的完整性。
当前支持 ES256,不包含 WebSocket 认证、客户端 SDK 或 mTLS 证书管理。
客户端 HTTP/2 需通过检查重复认证头的网关转发为 HTTP/1.1;Swoole 原生 HTTP/2 无法检查原始头,受保护接口返回 503。接入方式见网关说明。