如何在 PHP 中生成 JWT

Bag*_*uma 4 php jwt

如何在 php 中使用以下参数生成 JWT 令牌 < PAYLOAD > 标记中的主题、发行者、到期时间和有效负载。

  • Id可以是任意长度的任意随机数。
  • 主题测试服务
  • 发行人Baguma Inc
  • 到期时间将为当前时间后 30 秒(理想情况下)。
  • Payload来自第三方的请求
  • SigningKEYfcvxcnfrhrtghkfghgwerikdf
  • 签名算法将是HS512。

来自第三方的示例请求如下所示

<COMMAND><TYPE>REQUEST</TYPE><INTERFACE>TESTACCOUNT</INTERFACE> <REQUESTID>123</REQUESTID></COMMAND

clo*_*fin 10

你的回答让我开始了。这是我使用的工作代码(尽管是根据您的具体情况进行概括的)。感谢您让我开始!

function gen_jwt():String{
    $signing_key = "changeme";
    $header = [ 
        "alg" => "HS512", 
        "typ" => "JWT" 
    ];
    $header = base64_url_encode(json_encode($header));
    $payload =  [
        "exp" => 0,
    ];
    $payload = base64_url_encode(json_encode($payload));
    $signature = base64_url_encode(hash_hmac('sha512', "$header.$payload", $signing_key, true));
    $jwt = "$header.$payload.$signature";
    return $jwt;    
}

/**
 * per /sf/ask/142816831/#15875555
 */
function base64_url_encode($text):String{
    return str_replace(['+', '/', '='], ['-', '_', ''], base64_encode($text));
}
Run Code Online (Sandbox Code Playgroud)

  • 不需要额外的外部库。多谢!JWT 验证良好@ https://jwt.io/ (2认同)