JWT授权token生成
准备条件:登录B2C后台获取平台分配的key、secret
使用PHP-JWT库生成token
$payload = [
'iss' => "分配的JWT KEY",
'exp' => time() + 3600
];
$token = JWT::encode($payload, "分配的JWT Secret");
Token组成说明:
token由3部分加字符.
连接组成。 header.payload.signature
Token生成步骤:
1.第一部分json格式 header ,-----定义算法(约定值, 使用下述值,不用任何修改)
{
"typ": "JWT",
"alg": "HS256"
}
使用url安全base64encode编码, 得到第一部分字符
2.第二部分json格式 payload , ----token用户数据
{
"iss": "2ff4a9d41f7c40dc9eef410d882896c4", //PaaS平台分配的key
"exp": 12321322312311, //某个过期时间timestamp, 大于当前时间
}
其中iss、exp为 必须项 ,其他可以根据需要添加自定义项
PS:如果想把参数加入到签名验证(更高安全性控制)。则可以将参数加入到payload, 规则如下:将参数用&符号连接,并且参数名按首字母的ascii码顺序排列(参数名区分大小写、如果参数的值为空不参与连接), 如:amount=1&buy=1&product_id=13ea11ab131, 然后写入形成的payload如下
{
"iss": "2ff4a9d41f7c40dc9eef410d882896c4", //PaaS平台分配的key
"exp": 12321322312311, //某个过期时间timestamp, 大于当前时间
"data": "amount=1&buy=1&product_id=13ea11ab131a"
}
3.第三部分 signature,将1、2签名
将第一步和第二步部分的编码后的字符串用字符. 连接, 再使用PaaS平台分配的secret值作为加密的key, 用hash_hmac('SHA256')算法加密,得到第三部分。