美文网首页laravel
对于JWT的简单理解(php)

对于JWT的简单理解(php)

作者: Mr_Arvin | 来源:发表于2019-03-17 23:40 被阅读0次

    JWT(Json Web Token),其实就是一种token设计规范,由头部(Header)、载荷(Payload)、签名(Signatrue)组成。

    一:Header

    通常由两部分组成:令牌的类型(即JWT)和正在使用的签名算法(如HMAC SHA256)

    $header = {
    "alg": "HS256",
    "typ": "JWT"
    }
    

    使用base64_encode编码json,得到的则是JWT的header部分。

    二:Payload

    $payload = {
      "sub": "test",  //主题
      "iss": "test",  //签发人
      "iat": 1461888119,  //签发时间
      "exp": 1464516119,  //过期时间
      "nbf": 1461888119,  //生效时间,在此之前是无效的
      "jti": "test",  //编号
      "aud": "test"  //受众
    }
    

    此json中的参数并不都是必须的,使用base64_encode编码json,得到的则是JWT的payload部分。

    三:Signatrue

    $data = base64_encode($header).'.'.base64_encode($payload);
    $sign = base64_encode(hash_hmac('sha256', $data,' secret'));
    

    此处获得的$sign则是JWT的签名部分。

    将以上三部分用“点”作为分割符拼接起来urlencode,就是我们需要的token了。

    $token = urlencode($data.'.'.$sign);
    

    相关文章

      网友评论

        本文标题:对于JWT的简单理解(php)

        本文链接:https://www.haomeiwen.com/subject/ouipmqtx.html