# 配置
为了简化库的设置,jwt提供了类`Lcobucci\JWT\Configuration`.
它的目的是:
* 配置要使用的默认算法(签名者)和密钥
* 配置默认的验证约束集
* 为[扩展点提供自定义实现
* 检索组件(编码器、解码器、解析器、验证器和构建器)
## 用法
为了使用它,您必须:
1. 初始化配置对象
2. 自定义配置对象
3. 检索组件
### 配置初始化
该`Lcobucci\JWT\Signer\Key\InMemory`对象用于对称/非对称签名。
要初始化它,您可以将关键内容作为纯文本传递:
~~~php
use Lcobucci\JWT\Signer\Key\InMemory;
$key = InMemory::plainText('my-key-as-plaintext');
~~~
提供一个 base64 编码的字符串:
~~~php
use Lcobucci\JWT\Signer\Key\InMemory;
$key = InMemory::base64Encoded('YSB2ZXJ5IGxvbmcgYSB2ZXJ5IHVsdHJhIHNlY3VyZSBrZXkgZm9yIG15IGFtYXppbmcgdG9rZW5z');
~~~
或者提供一个文件路径:
~~~php
use Lcobucci\JWT\Signer\Key\InMemory;
use Lcobucci\JWT\Signer\Key\LocalFileReference;
$key = InMemory::file(__DIR__ . '/stored.pem'); // 这将读取文件并将其内容保留在内存中
$key = LocalFileReference::file(__DIR__ . '/stored.pem'); // 这只是保留对文件的引用
~~~
#### 对于对称算法
对称算法使用相同的密钥进行签名创建和验证。这意味着您的密钥**保持机密**非常重要。
**建议您使用具有大量熵的密钥,最好使用加密安全的伪随机数生成器 (CSPRNG) 生成。您可以使用[CryptoKey](https://github.com/AndrewCarterUK/CryptoKey)工具为您执行此操作。**
~~~php
use Lcobucci\JWT\Configuration;
use Lcobucci\JWT\Signer\Hmac\Sha256;
use Lcobucci\JWT\Signer\Key\InMemory;
$configuration = Configuration::forSymmetricSigner(
//您可以使用任何HMAC变体(256、384和512)
new Sha256(),
// 用您自己的密钥替换下面的值!
InMemory::base64Encoded('mBC5v1sOKVvbdEitdSBenu59nfNfhwkedkJVNabosTw=')
// 您还可以通过在此处提供额外参数来覆盖JOSE编码器/解码器
);
~~~
#### 对于非对称算法
非对称算法使用**私钥**创建签名,使用**公钥**进行验证。这意味着可以分发您的**public key**。但是,**私钥**应该**保密**。
~~~php
use Lcobucci\JWT\Configuration;
use Lcobucci\JWT\Signer;
use Lcobucci\JWT\Signer\Key\LocalFileReference;
use Lcobucci\JWT\Signer\Key\InMemory;
$configuration = Configuration::forAsymmetricSigner(
// 您可以在Curve25519上使用RSA或ECDSA及其所有变体(256、384和512)和EdDSA
new Signer\Rsa\Sha256(),
LocalFileReference::file(__DIR__ . '/private.pem'),
InMemory::base64Encoded('mBC5v1sOKVvbdEitdSBenu59nfNfhwkedkJVNabosTw=')
// 您还可以通过在此处提供额外参数来覆盖JOSE编码器/解码器
);
~~~
## *提示*
ECDSA 算法的实现具有构造函数依赖性。使用`create()`命名构造函数来避免处理它(例如:)`Lcobucci\JWT\Signer\Ecdsa\Sha256::create()`。
#### 对于没有算法
警告
**不**建议将此配置类型用于生产环境。它只是为了让人们可以更简单、更快速地设置测试,避免任何类型的签名创建/验证。
~~~php
use Lcobucci\JWT\Configuration;
$configuration = Configuration::forUnsecuredSigner(
// 你还可以通过在此处提供额外参数来覆盖JOSE编码器/解码器
);
~~~
### 定制
通过使用 的设置器,`Lcobucci\JWT\Configuration`您可以自定义此库的设置。
重要的
如果您想使用自定义配置,请确保在调用任何 getter 之前调用 setter。否则,将使用默认实现。
这些是可用的 setter:
* `Lcobucci\JWT\Configuration#setBuilderFactory()`: 配置令牌构建器的创建方式
* `Lcobucci\JWT\Configuration#setParser()`:配置自定义令牌解析器
* `Lcobucci\JWT\Configuration#setValidator()`: 配置自定义验证器
* `Lcobucci\JWT\Configuration#setValidationConstraints()`: 配置默认的验证约束集
### 检索组件
完成所有必要的配置后,您可以在代码周围传递配置对象并使用 getter 来检索组件:
这些是可用的吸气剂:
* `Lcobucci\JWT\Configuration#builder()`:检索令牌构建器(始终创建新实例)
* `Lcobucci\JWT\Configuration#parser()`: 检索令牌解析器
* `Lcobucci\JWT\Configuration#signer()`: 检索签名者
* `Lcobucci\JWT\Configuration#signingKey()`: 检索创建签名的密钥
* `Lcobucci\JWT\Configuration#verificationKey()`: 检索签名验证的密钥
* `Lcobucci\JWT\Configuration#validator()`: 检索令牌验证器
* `Lcobucci\JWT\Configuration#validationConstraints()`: 检索默认的验证约束集
- 序言
- ThinkPHP官方资源
- 术语
- 根目录
- php术语
- jwt
- 下载jwt
- 认识jwt
- 生成token
- 验证token
- lcobucci/jwt
- 安装
- 配置
- 生成token
- 解析令牌
- 验证令牌
- 扩展库jwt
- thinkPHP使用lcobucci/jwt
- phpmailer
- PHPMailer的使用
- phpMailer config
- 短信验证吗
- 阿里云短信验证码发送类
- 权限管理
- 基于thinkphp6.0
- 通用函数
- 密码加密
- 数组
- 数据库
- 查询数据
- 添加数据
- 删除数据
- 批量删除
- 更新数据
- 请求流程
- thinkphp6安装
- thinkphp6目录介绍
- 单应用
- 多应用
- 配置文件
- 模型,模板与Model的区别
- .env介绍
- 入口文件
- 控制器
- model层
- 视图层
- common公共函数
- 路由
- 命令行
- 常用thinkphp函数和方法
- 高德地图i定位城市
- 更新日志