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

1.0.0 2023-08-09 18:11 UTC

This package is auto-updated.

Last update: 2024-09-09 20:39:18 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 标头时,包含值为 b64 的值的 crit 受保护标头是强制性的。

支持的序列化模式

  • 紧凑 JSON 序列化语法(JWS/JWE 创建和加载)
  • 平坦 JSON 序列化语法(JWS/JWE 创建和加载)
  • 通用 JSON 序列化语法(JWS/JWE 创建和加载)

支持的压缩方法

支持的关键类型(JWK)

JWK 对象支持 JSON Web Key Thumbprint (RFC 7638).

密钥集(JWKSet)

JWKSet 完全支持。

支持的签名算法

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

支持的关键加密算法

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

支持的内容加密算法

发布流程

发布流程 在此处描述

先决条件

此库需要至少

  • 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许可下发布。