该软件包已被弃用,不再维护。作者建议使用web-token/jwt-framework软件包代替。

PHP 的 JSON 对象签名和加密库。

安装次数: 2,611,438

依赖项: 25

建议者: 3

安全性: 0

星标: 426

关注者: 26

分支: 74

v7.1.0 2018-05-03 07:34 UTC

README

如果你真的很喜欢这个库,那么你可以帮助我几个🍻!

Beerpay Beerpay

⚠️⚠️⚠️

我们强烈建议您使用新的JWT Framework 项目而不是这个库。

  • 对本库的积极支持将持续到2018 年底
  • 安全支持将从2019年开始,直到2020年底。

迁移指南可在新项目的文档中找到。

⚠️⚠️⚠️

Scrutinizer Code Quality Coverage Status

Build Status HHVM Status PHP 7 ready

Dependency Status

SensioLabsInsight

Latest Stable Version Total Downloads Latest Unstable Version License

此库提供了以下实现:

提供的功能

支持的输入类型

JWS 或 JWE 对象支持所有可以编码成 JSON 的输入

  • string, array, integer, float...
  • 实现 \JsonSerializable 接口的对象,例如 JWKInterfaceJWKSetInterface

也支持分离内容

支持未编码的有效载荷。这意味着您可以在不进行 base64 编码操作的情况下签名和验证有效载荷。根据 RFC7797,必须保护 b64 标头。当设置 b64 标头时,必须包含值 b64crit 受保护标头。

支持的序列化模式

  • 紧凑的 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完全受支持。

支持的签名算法

签名算法 支持 注释
HS256HS384HS512 YES
HS256ES384ES512 YES
RS256RS384RS512 YES
PS256PS384PS512 YES
YES 请注意,这不是一个安全的算法。请谨慎使用!
EdDSAEd25519 曲线 YES 需要第三方扩展
EdDSAEd448 曲线 不支持

请注意,EdDSA签名算法规范尚未批准。对算法 Ed25518Ed448 的支持可能会更改。请谨慎使用。

支持的关键加密算法

密钥加密算法 支持 注释
dir YES
RSA1_5RSA-OAEPRSA-OAEP-256 YES
ECDH-ESECDH-ES+A128KWECDH-ES+A192KWECDH-ES+A256KW YES
A128KWA128KWA128KW YES
PBES2-HS256+A128KWPBES2-HS384+A192KWPBES2-HS512+A256KW YES
A128GCMKWA192GCMKWA256GCMKW YES 为了更好的性能,请使用PHP 7.1+ 或此第三方扩展
EdDSAX25519 曲线 YES 需要第三方扩展
EdDSAX448 曲线 不支持

请注意,EdDSA加密算法规范尚未批准。对算法 X25518X448 的支持可能会更改。请谨慎使用。

支持的内容加密算法

内容加密算法 支持 注释
A128CBC-HS256A192CBC-HS384A256CBC-HS512 YES
A128GCMA192GCMA256GCM YES 为了更好的性能,请使用PHP 7.1+ 或此第三方扩展

发布过程

发布过程在这里描述

先决条件

此库至少需要

  • PHP 7.0+,
  • OpenSSL扩展。

请考虑以下可选要求

  • 对于基于AES-GCM的算法(AxxxGCMAxxxGCMKW),如果不在PHP 7.1+上:强烈推荐使用PHP Crypto扩展(至少v0.2.1),因为加密/解密的性能比纯PHP实现要快。
  • 对于Ed25519算法:需要php-ed25519-ext
  • 对于X25519算法:需要php-curve25519-ext

请阅读以下基于ECC算法的性能测试结果。与其他算法相比,操作所需时间较长,我们不推荐使用。

持续集成

已成功使用PHP 7.0PHP 7.1PHP7.2测试了所有算法。如果您使用PHP 5.6,请安装本项目的^6.0版本。

已完全实现RFC 7520中的测试向量,所有测试均通过。

我们使用Scrutinizer-CISensio Insight跟踪错误和代码质量。

编码标准由StyleCI验证。

代码覆盖率由Coveralls.io分析。

安装

安装此库的首选方法是依赖于Composer。

composer require spomky-labs/jose

如何使用

查看如何使用以了解如何加载您的JWT并发现此库提供的所有可能性。

性能

请阅读性能页面以了解此库支持的算法有多快。

贡献

欢迎提出新功能请求、错误修复以及所有其他使此库有用的想法。如果您愿意编写代码,您可以尝试修复需要帮助的打开问题那些易于修复的问题

不要忘记遵循这些最佳实践

许可证

此软件根据MIT许可证发布。