用到的工具:JWP类, RSA非对称加密类
composer require firebase/php-jwt;
JWT包含三部分数据:
- Header:头部,通常头部有两部分信息:
1.token类型:JWT
2.加密方式:base64(HS256) - Payload:载荷,就是有效数据,一般包含下面信息:
1.用户身份信息(注意,这里因为采用base64编码,可解码,因此不要存放敏感信息)
2.注册声明:如token的签发时间,过期时间,签发人等
这部分也会采用base64编码,得到第二部分数据 - Signature:签名,是整个数据的认证信息。根据前两步的数据,再加上指定的密钥(secret)(不要泄漏,最好周期性更换),通过base64编码生成。用于验证整个数据完整和可靠性
RSA非对称加密:
- 需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。
- 公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;
- 如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。
- 因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。
将私钥private_key.pem用在服务器端,公钥发放给android跟ios等前端
就是将非对称加密的信息传递到JWT里面的做解密验证
评论