feat(player-auth): add JWT TTL check and AES wrapped token support
1. 新增JWT有效期校验,限制exp-iat最大时长并支持强制校验iat字段 2. 新增AES-GCM密文Token解包能力,支持非标准JWT格式的令牌传递 3. 新增相关配置项和环境变量,可灵活调整校验策略
This commit is contained in:
@@ -39,7 +39,12 @@ return [
|
||||
|
|
||||
| dev_bypass:仅当 APP_ENV∈{local, testing} 且 LOTTERY_PLAYER_AUTH_DEV_BYPASS=true 时,
|
||||
| 允许 Authorization: Bearer dev:{players.id}(否则 dev: 会被当成 JWT 解析并报 8002)
|
||||
| jwt.* :主站签发的 JWT 内取站点、玩家字段的路径名(与主站约定一致);验签通过后若无映射行则自动建档
|
||||
| jwt.* :主站签发的 JWT;验签通过后若无映射行则自动建档
|
||||
| max_ttl_seconds :允许 (exp-iat) 最大秒数(默认 300=5 分钟),与「短效 Token」对齐
|
||||
| require_iat_claim:为 true 时必须带 iat,否则拒绝(不建档)
|
||||
|
|
||||
| aes.key_base64 :可选。32 字节原始密钥再做 Base64 写入 env LOTTERY_PLAYER_TOKEN_AES_KEY;
|
||||
| 有值时 Bearer 串(非 xxx.yyy.zzz 外形)会先尝试 AES-GCM 解包为内层 JWT 再验签。
|
||||
*/
|
||||
'player_auth' => [
|
||||
'dev_bypass' => env('LOTTERY_PLAYER_AUTH_DEV_BYPASS', false),
|
||||
@@ -47,6 +52,11 @@ return [
|
||||
'algorithm' => env('LOTTERY_JWT_ALGORITHM', 'HS256'),
|
||||
'claim_site_code' => env('LOTTERY_JWT_CLAIM_SITE_CODE', 'site_code'),
|
||||
'claim_site_player_id' => env('LOTTERY_JWT_CLAIM_SITE_PLAYER_ID', 'site_player_id'),
|
||||
'max_ttl_seconds' => max(1, min(3600, (int) env('LOTTERY_JWT_MAX_TTL_SECONDS', 300))),
|
||||
'require_iat_claim' => filter_var(env('LOTTERY_JWT_REQUIRE_IAT', true), FILTER_VALIDATE_BOOLEAN),
|
||||
],
|
||||
'aes' => [
|
||||
'key_base64' => env('LOTTERY_PLAYER_TOKEN_AES_KEY'),
|
||||
],
|
||||
],
|
||||
|
||||
|
||||
Reference in New Issue
Block a user