mathieu-bour / guardian
为 Laravel 和 Lumen 的高可配置 JSON Web Token 实现。
Requires
- php: ^7.2
- ext-json: *
- ext-sodium: *
- illuminate/auth: ^6.0 || ^7.0
- illuminate/http: ^6.0 || ^7.0
- illuminate/support: ^6.0 || ^7.0
- psr/log: ^1.1
- ramsey/uuid: ^3.0 || ^4.0
- web-token/jwt-checker: ^2.1
- web-token/jwt-core: ^2.1
- web-token/jwt-key-mgmt: ^2.1
Requires (Dev)
- laravel/framework: ^7.0
- laravel/lumen-framework: ^7.0
- mathrix-education/coding-standard: 2.0.1
- mockery/mockery: ^1.3
- phpbench/phpbench: ^0.17.0
- phpunit/phpunit: ^8.0
- web-token/jwt-signature-algorithm-ecdsa: ^2.1
- web-token/jwt-signature-algorithm-eddsa: ^2.1
- web-token/jwt-signature-algorithm-hmac: ^2.1
- web-token/jwt-signature-algorithm-rsa: ^2.1
Suggests
- ext-gmp: Required to use the ECDSA and EDDSA keys.
- web-token/jwt-signature-algorithm-ecdsa: Sign tokens using Elliptic Curves.
- web-token/jwt-signature-algorithm-eddsa: Sign tokens using Edwards-curve.
- web-token/jwt-signature-algorithm-hmac: Sign tokens using HMAC.
- web-token/jwt-signature-algorithm-rsa: Sign tokens using RSA.
- dev-main
- 0.1.0
- 0.1.0-rc.2
- 0.1.0-rc.1
- 0.1.0-beta.5
- 0.1.0-beta.4
- 0.1.0-beta.3
- 0.1.0-beta.2
- 0.1.0-beta.1
- dev-dependabot/npm_and_yarn/docs/terser-4.8.1
- dev-dependabot/npm_and_yarn/docs/mermaid-9.1.2
- dev-dependabot/npm_and_yarn/docs/eventsource-1.1.1
- dev-dependabot/npm_and_yarn/docs/color-string-1.9.1
- dev-dependabot/npm_and_yarn/docs/postcss-7.0.39
- dev-dependabot/npm_and_yarn/docs/async-2.6.4
- dev-dependabot/npm_and_yarn/docs/minimist-1.2.6
- dev-dependabot/npm_and_yarn/docs/url-parse-1.5.10
- dev-dependabot/npm_and_yarn/docs/prismjs-1.27.0
- dev-dependabot/npm_and_yarn/docs/follow-redirects-1.14.8
- dev-dependabot/npm_and_yarn/docs/path-parse-1.0.7
- dev-dependabot/npm_and_yarn/docs/ws-6.2.2
- dev-dependabot/npm_and_yarn/docs/dns-packet-1.3.4
- dev-dependabot/npm_and_yarn/docs/browserslist-4.16.6
- dev-dependabot/npm_and_yarn/docs/lodash-4.17.21
- dev-dependabot/npm_and_yarn/docs/ssri-6.0.2
- dev-dependabot/npm_and_yarn/docs/http-proxy-1.18.1
This package is auto-updated.
Last update: 2022-08-21 01:08:58 UTC
README
为 Laravel 和 Lumen 的高可配置 JSON Web Token 实现。
Guardian 提供了一个额外的身份验证 guardian
驱动,可以像标准 session
或 token
驱动一样使用。
Guardian 遵循 语义化版本规范。
❗ 在 1.0.0 版本发布之前,不应将 master
分支视为稳定。 ❗
动机
我们的公司基于 Lumen 框架构建后端,我们需要一种无状态的标识和认证方法。我们选择使用结合安全性和易用性的 JSON Web Tokens。虽然存在一些库,如 tymondesigns/jwt-auth 或 laravel/passport,但它们不符合我们的要求。实际上,我们想要控制密钥的加密算法,并能够使用多个算法。
经过仔细考虑,我们决定开发自己的 JWT 库用于 Lumen,后来将其移植到 Laravel 并开源。
致谢
- Rafhael Cedeno 和 Laura Bannier 对其英文审阅的贡献
- JWT 密码学实现由
web-token
- 使用 PHPBench 进行基准测试
- 使用 VuePress 生成文档
- 使用 PHPUnit 和 Mockery 运行测试
先决条件
- PHP >= 7.2
- Laravel/Lumen 6 或 7
安装
只需将 Guardian 添加到您的项目依赖项中。
composer require mathieu-bour/guardian
根据您想使用的 算法,安装相应的密码学库
算法 | 库 | 必需的 PHP 扩展 |
---|---|---|
ECDSA | web-token/jwt-signature-algorithm-ecdsa |
openssl |
EdDSA | web-token/jwt-signature-algorithm-eddsa |
sodium |
HMAC | web-token/jwt-signature-algorithm-hmac |
n/a |
RSA | web-token/jwt-signature-algorithm-rsa |
openssl, gmp |
如果您不知道选择哪种算法,我们推荐使用 ECDSA
和 ES512
算法以及 P-521
曲线。
Laravel
发布默认 Guardian 配置
php artisan vendor:publish --provider="Windy\Guardian\GuardianServiceProvider"
Lumen
将默认 Guardian 配置从 vendor/mathieu-bour/guardian/config/guardian.php
复制到 config/guardian.php
。然后,将提供者添加到您的 bootstrap/app.php
并使用以下命令加载配置:
$app->configure('guardian'); $app->register(Windy\Guardian\GuardianServiceProvider::class);
如果您想使用 Guardian
外观,请确保在您的 bootstrap/app.php
中已加载外观。
$app->withFacades();
下一步
替代方案
在此,我们谦逊地提到了一些我们认为有趣的 Guardian 替代方案。
laravel/passport
Passport 是官方的 Laravel 库,支持 JWT 身份验证。
使用 Laravel Passport,Laravel 可以轻松实现 API 身份验证,它为您的 Laravel 应用程序提供了完整的 OAuth2 服务器实现,只需几分钟即可完成。
tymondesigns/jwt-auth
jwt-auth 是 Guardian 的一个有价值的替代方案,它提供了一组高级 API,例如通过外观直接从请求凭证中验证用户。jwt-auth 还提供了一种将生成的令牌加入黑名单的方法,而 Guardian 则将实现留给开发者。如果您正在寻找一种更简单的方式来使用 JWT,我们强烈推荐您查看这个库!