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框架项目而不是这个库。
- 此库的积极支持将持续到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)
密钥类型 | 支持 | 注释 |
---|---|---|
none |
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 | |
none |
YES | 请注意,这不是一个安全的算法。请谨慎使用! |
基于Ed25519 曲线的EdDSA |
YES | 需要第三方扩展 |
基于Ed448 曲线的EdDSA |
否 |
请注意,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+或此第三方扩展 |
基于X25519 曲线的EdDSA |
YES | 需要第三方扩展 |
基于X448 曲线的EdDSA |
否 |
请注意,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许可发布。