45 lines
1.3 KiB
Python
45 lines
1.3 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
测试Token生成和验证
|
|
"""
|
|
|
|
import base64
|
|
import json
|
|
|
|
# 从测试中获取的Token
|
|
token = "eyJhbGciOiJIUzM4NCJ9.eyJyb2xlcyI6W10sInVzZXJJZCI6MTA2NCwidXNlcm5hbWUiOiJhZG1pbiIsInN1YiI6ImFkbWluIiwiaWF0IjoxNzc1MDkxNzg4LCJleHAiOjE3NzUxNzgxODh9"
|
|
|
|
# 解析Token header
|
|
def decode_jwt_header(token):
|
|
parts = token.split('.')
|
|
if len(parts) < 1:
|
|
return None
|
|
|
|
header = parts[0]
|
|
# 添加padding
|
|
padding = len(header) % 4
|
|
if padding:
|
|
header += '=' * (4 - padding)
|
|
|
|
decoded = base64.b64decode(header)
|
|
return json.loads(decoded)
|
|
|
|
header = decode_jwt_header(token)
|
|
print("Token Header:")
|
|
print(json.dumps(header, indent=2))
|
|
|
|
print("\n算法: " + header.get('alg', 'Unknown'))
|
|
|
|
# Gateway secret
|
|
gateway_secret = "U2FsdGVkX1+vZ5Y9QmKxL8nN3rP7tW2jH4fG6dA8sB1cE5yN0zX3qV7wM4"
|
|
print(f"\nGateway secret长度: {len(gateway_secret)} bytes")
|
|
print(f"Gateway secret支持算法: HS384 (因为长度 >= 48 bytes)")
|
|
|
|
print("\n问题分析:")
|
|
print("1. manage-app使用JwtTokenProvider生成Token")
|
|
print("2. JwtTokenProvider使用Keys.hmacShaKeyFor()自动选择算法")
|
|
print("3. Gateway secret长度58 bytes,自动选择HS384算法")
|
|
print("4. Gateway使用JwtUtil验证Token")
|
|
print("5. JwtUtil使用new SecretKeySpec()创建密钥")
|
|
print("6. 需要确保JwtUtil也使用相同的算法")
|