此包已被废弃,不再维护。作者建议使用web-token/jwt-framework包。

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

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

README

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

Beerpay Beerpay

⚠️⚠️⚠️

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

  • 此库的积极支持将持续到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的输入

  • stringarrayintegerfloat...
  • 实现\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)

密钥类型 支持 注释
none 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
none YES 请注意,这不是一个安全的算法。请谨慎使用!
基于Ed25519曲线的EdDSA YES 需要第三方扩展
基于Ed448曲线的EdDSA

请注意,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+或此第三方扩展
基于X25519曲线的EdDSA YES 需要第三方扩展
基于X448曲线的EdDSA

请注意,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许可发布。