对于JWT的简单理解(php)

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);
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容