# 令牌驱动

扩展包内置 HashTokenJsonWebToken 两个令牌驱动,可根据需要自行注册。

# HashToken

'hash' => [
    
    /*
    |--------------------------------------------------------------------------
    | 哈希/签名算法
    |---------------------------------------------------------------------------
    |
    | 此值决定用于对令牌进行签名或哈希处理的算法。
    | 您可以根据应用程序的安全要求进行调整。
    |
    | 支持:@link https://php.net/manual/en/function.hash-hmac.php
    |
    */
    
    'algo' => env('TOKEN_HASH_ALGO', 'sha256'),
    
    /*
    |--------------------------------------------------------------------------
    | 令牌密钥
    |---------------------------------------------------------------------------
    |
    | 此密钥用于对应用程序颁发的令牌进行签名或验证。
    | 默认情况下,它会回退到应用程序的 APP_KEY。您应该
    | 确保此密钥始终保持保密和安全。
    |
    */
    
    'secret_key' => env('TOKEN_SECRET_KEY', env('APP_KEY')),
],
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

# 生成哈希密钥

php artisan tokenable:secret
1

# JsonWebToken

'jwt' => [
    
    /*
    |--------------------------------------------------------------------------
    | 用于签名和验证的加密算法
    |---------------------------------------------------------------------------
    |
    | 此选项决定用于签名和验证 JWT 令牌的加密算法。您可以选择非对称算法
    | (RS256、RS384、RS512、ES256、ES384、ES512、EdDSA)或对称算法
    | (HS256、HS384、HS512)。
    |
    | - RS*、ES*、EdDSA:需要 private_key(签名)和 public_key
    | (验证)。推荐用于分布式系统。
    |
    | - HS*:只需要 secret_key。更简单但灵活性较差,推荐用于
    | 单服务部署。
    |
    | 出于兼容性考虑,默认为 HS256,但您应该考虑更强大的算法
    |可以使用 RS384 或 ES384 等算法来提高安全性。
    |
    */
    
    'algo' => env('TOKEN_ALGO', 'HS256'),
    
    /*
    |--------------------------------------------------------------------------
    | 私钥
    |---------------------------------------------------------------------------
    |
    | 私钥用于在使用非对称算法(例如 RS256、RS512 或 ES512)时对令牌进行签名。
    | 此密钥必须严格保密,
    | 切勿公开。
    |
    | 您可以指定 PEM 文件的路径,也可以直接从环境变量或安全密钥管理器加载密钥。
    | 从环境变量或安全密钥管理器加载密钥。
    |
    */
    
    'private_key' => env('TOKEN_PRIVATE_KEY', 'tokenable-private.key'),
    
    /*
    |---------------------------------------------------------------------------------------
    | 公钥
    |---------------------------------------------------------------------------------------
    |
    |公钥用于验证使用非对称算法(例如 RS256、RS512 或 ES512)签名的令牌。
    | 对应的私钥签名的令牌。
    | 此密钥可以安全地与
    | 其他需要验证令牌的服务或客户端共享。
    |
    | 您可以指定 PEM 文件的路径,或直接从环境变量或安全密钥管理器加载密钥。
    |
    */
    
    'public_key' => env('TOKEN_PUBLIC_KEY', 'tokenable-public.key'),
    
    /*
    |--------------------------------------------------------------------------
    | 密钥
    |---------------------------------------------------------------------------------------
    |
    | 此密钥用于在使用对称算法(例如 HMAC,HS256、HS512)签名令牌时使用。
    | 必须以纯文本形式提供,
    | 并且可以通过环境变量进行设置以方便使用。
    |
    */
    
    'secret_key' => env('TOKEN_SECRET_KEY', env('APP_KEY')),
],
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69

# 生成密钥

php artisan tokenable:keys
1

支持(RS256、RS384、RS512、ES256、ES384、ES512、EdDSA)[默认值:"RS256"]:

php artisan tokenable:keys ES384
1

生成指定的密钥算法,例如:ES384

# 配置密钥存储路径

'key_path' => env('TOKEN_KEY_PATH', storage_path('keys')),
1

# 指定密钥存储路径

在 服务提供者 中手动指定密钥存储路径:

use Jundayw\Tokenable\Tokenable;

Tokenable::loadKeysFrom(storage_path('keys'));
1
2
3