jcarrillocallao / jose
PHP 的 JSON 对象签名和加密库。
Requires
- php: >=7.4
- ext-gmp: *
- lib-openssl: *
- beberlei/assert: ^2.4
- fgrosse/phpasn1: ^2.0
- mdanter/ecc: 0.5.*
- psr/cache: ^1.0
- spomky-labs/aes-key-wrap: ^3.0|^4.0
- spomky-labs/base64url: ^1.0
- spomky-labs/php-aes-gcm: ^1.2
- symfony/polyfill-mbstring: ^1.1
Requires (Dev)
- php-coveralls/php-coveralls: ^2.6.0
- phpunit/phpunit: ^9.0
- symfony/cache: ^2.0|^3.0|^4.0
Suggests
- ext-crypto: Highly recommended when you use AES GCM based algorithms.
- ext-curl: Needed by the JKU/X5U keyset factory.
- ext-curve25519: For EdDSA with X25519 curves support.
- ext-ed25519: For EdDSA with Ed25519 curves support.
This package is auto-updated.
Last update: 2024-09-09 20:39:18 UTC
README
如果你真的很喜欢这个库,那么你可以帮助我喝杯🍻!
⚠️⚠️⚠️
我们强烈建议你使用新的 JWT 框架项目 而不是这个库。
- 此库的活跃支持将持续到 2018 年底。
- 安全支持将从 2019 年开始,持续到 2020 年底。
迁移指南可在 新项目的文档 中找到。
⚠️⚠️⚠️
此库提供了以下实现的实现:
- JWS JSON Web Signature (RFC 7515),
- JWT JSON Web Token (RFC 7519),
- JWE JSON Web Encryption (RFC 7516),
- JWA JSON Web Algorithms (RFC 7518).
- JWK JSON Web Key (RFC 7517).
- JSON Web Key Thumbprint (RFC 7638).
- 未编码负载选项 RFC7797.
提供的功能
支持的输入类型
JWS 或 JWE 对象支持可以编码为 JSON 的任何输入
-
string
,array
,integer
,float
... - 实现了
\JsonSerializable
接口的对象,例如JWKInterface
或JWKSetInterface
也支持 分离内容。
支持未编码负载。这意味着您可以在不进行 base64 编码操作的情况下对负载进行签名和验证。根据 RFC7797,必须保护 b64
标头。当设置 b64
标头时,包含值为 b64
的值的 crit
受保护标头是强制性的。
支持的序列化模式
- 紧凑 JSON 序列化语法(JWS/JWE 创建和加载)
- 平坦 JSON 序列化语法(JWS/JWE 创建和加载)
- 通用 JSON 序列化语法(JWS/JWE 创建和加载)
支持的压缩方法
支持的关键类型(JWK)
JWK 对象支持 JSON Web Key Thumbprint (RFC 7638).
密钥集(JWKSet)
JWKSet 完全支持。
支持的签名算法
请注意,EdDSA 签名算法规范 尚未获得批准。对算法 Ed25518
和 Ed448
的支持可能会更改。请谨慎使用。
支持的关键加密算法
请注意,EdDSA 加密算法规范 尚未获得批准。对算法 X25518
和 X448
的支持可能会更改。请谨慎使用。
支持的内容加密算法
发布流程
发布流程 在此处描述。
先决条件
此库需要至少
请考虑以下可选要求
- 对于基于AES-GCM算法的算法(
AxxxGCM
和AxxxGCMKW
),如果不在PHP 7.1及以上版本上:强烈推荐使用PHP Crypto 扩展(至少v0.2.1
版本),因为加密/解密速度比纯PHP实现更快。 - 对于Ed25519算法:需要php-ed25519-ext。
- 对于X25519算法:需要php-curve25519-ext。
请阅读以下有关基于ECC算法的性能测试结果。与其他算法相比,执行操作所需时间较长,我们不推荐使用它们。
持续集成
已成功使用PHP 7.0
、PHP 7.1
和PHP7.2
以及所有算法进行测试。如果您使用PHP 5.6,请安装此项目的版本 ^6.0。
从RFC 7520中获取的测试向量已完全实现,所有测试均通过。
我们使用Scrutinizer-CI和Sensio Insight跟踪错误和代码质量。
编码标准由StyleCI验证。
代码覆盖率由Coveralls.io分析。
安装
安装此库的首选方式是依赖Composer。
composer require spomky-labs/jose
如何使用
请参阅如何使用以了解如何加载您的JWT以及发现此库提供的一切可能性。
性能
请阅读性能页面以了解此库支持的所有算法的速度。
贡献
欢迎提出新功能请求、修复错误以及所有其他有助于使此库有用的想法。如果您对编写代码感到舒适,可以尝试修复需要帮助的已打开问题或那些易于修复的问题。
不要忘记遵循这些最佳实践。
许可
此软件在MIT许可下发布。