spomky-labs / jose
Requires
- php: ^7.0
- 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)
- phpunit/phpunit: ^6.0
- satooshi/php-coveralls: ^2.0
- symfony/cache: ^2.0|^3.0|^4.0
Suggests
- ext-crypto: Highly recommended when you use AES GCM based algorithms.
- ext-curve25519: For EdDSA with X25519 curves support.
- ext-ed25519: For EdDSA with Ed25519 curves support.
- dev-master / 7.1.x-dev
- v7.1.0
- v7.0.1
- v7.0.0
- v6.1.x-dev
- v6.1.7
- v6.1.6
- v6.1.5
- v6.1.4
- v6.1.3
- v6.1.2
- v6.1.1
- v6.1.0
- v6.0.0
- v5.2.0
- v5.1.1
- v5.0.6
- v5.0.5
- v5.0.4
- v5.0.3
- v5.0.2
- v5.0.1
- v5.0.0
- v5.0.0-alpha2
- v5.0.0-alpha1
- v4.0.3
- v4.0.2
- v4.0.1
- v4.0.0
- v3.0.1
- v3.0.0
- v3.0.0-beta4
- v3.0.0-beta3
- v3.0.0-beta2
- v3.0.0-beta1
- v3.0.0-alpha11
- v3.0.0-alpha10
- v3.0.0-alpha9
- v3.0.0-alpha8
- v3.0.0-alpha7
- v3.0.0-alpha6
- v3.0.0-alpha5
- v3.0.0-alpha4
- v3.0.0-alpha3
- v3.0.0-alpha2
- v3.0.0-alpha1
- v2.0.0-beta1
- v2.0.0-alpha2
- v2.0.0-alpha1
- v1.0.0-beta1
- v1.0.0-alpha11
- v1.0.0-alpha4
- v1.0.0-alpha3
- v1.0.0-alpha2
- v1.0.0-alpha1
- v0.4.6
- v0.4.5
- v0.4.4
- v0.4.3
- v0.4.2
- v0.4.1
- v0.4.0
- v0.3.0
- v0.2.1
- v0.2.0
- v0.1.2
- v0.1.1
- v0.1.0
- v0.0.14
- v0.0.13
- v0.0.12
- v0.0.11
- v0.0.10
- v0.0.9
- v0.0.8
- v0.0.7
- v0.0.6
- v0.0.5
- v0.0.4
- v0.0.3
- v0.0.2
- v0.0.1
- dev-guardrails/initial
This package is auto-updated.
Last update: 2019-08-23 18:32:11 UTC
README
如果你真的很喜欢这个库,那么你可以帮助我几个🍻!
⚠️⚠️⚠️
我们强烈建议您使用新的JWT Framework 项目而不是这个库。
- 对本库的积极支持将持续到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 创建和加载)
支持的压缩方法
压缩方法 | 支持 | 注释 |
---|---|---|
Deflate (DEF ) |
YES | |
GZip (GZ ) |
YES | 此压缩方法在规范中未描述 |
ZLib (ZLIB ) |
YES | 此压缩方法在规范中未描述 |
支持的关键类型(JWK)
密钥类型 | 支持 | 注释 |
---|---|---|
无 |
YES | 无密钥仅用于 none 算法 |
oct |
YES | 对称密钥 |
RSA |
YES | 基于RSA的非对称密钥 |
EC |
YES | 基于椭圆曲线的非对称密钥 |
OKP |
YES | 基于八位字节对的非对称密钥 |
JWK对象支持JSON Web Key指纹(RFC 7638)。
密钥集(JWKSet)
JWKSet完全受支持。
支持的签名算法
签名算法 | 支持 | 注释 |
---|---|---|
HS256 ,HS384 和 HS512 |
YES | |
HS256 ,ES384 和 ES512 |
YES | |
RS256 ,RS384 和 RS512 |
YES | |
PS256 ,PS384 和 PS512 |
YES | |
无 |
YES | 请注意,这不是一个安全的算法。请谨慎使用! |
EdDSA 与 Ed25519 曲线 |
YES | 需要第三方扩展 |
EdDSA 与 Ed448 曲线 |
不支持 |
请注意,EdDSA签名算法规范尚未批准。对算法 Ed25518
和 Ed448
的支持可能会更改。请谨慎使用。
支持的关键加密算法
密钥加密算法 | 支持 | 注释 |
---|---|---|
dir |
YES | |
RSA1_5 ,RSA-OAEP 和 RSA-OAEP-256 |
YES | |
ECDH-ES ,ECDH-ES+A128KW ,ECDH-ES+A192KW 和 ECDH-ES+A256KW |
YES | |
A128KW ,A128KW 和 A128KW |
YES | |
PBES2-HS256+A128KW ,PBES2-HS384+A192KW 和 PBES2-HS512+A256KW |
YES | |
A128GCMKW ,A192GCMKW 和 A256GCMKW |
YES | 为了更好的性能,请使用PHP 7.1+ 或此第三方扩展 |
EdDSA 与 X25519 曲线 |
YES | 需要第三方扩展 |
EdDSA 与 X448 曲线 |
不支持 |
请注意,EdDSA加密算法规范尚未批准。对算法 X25518
和 X448
的支持可能会更改。请谨慎使用。
支持的内容加密算法
内容加密算法 | 支持 | 注释 |
---|---|---|
A128CBC-HS256 ,A192CBC-HS384 和 A256CBC-HS512 |
YES | |
A128GCM ,A192GCM 和 A256GCM |
YES | 为了更好的性能,请使用PHP 7.1+ 或此第三方扩展 |
发布过程
发布过程在这里描述。
先决条件
此库至少需要
请考虑以下可选要求
- 对于基于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许可证发布。