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')算法加密,得到第三部分。

results matching ""

    No results matching ""