☕【权限设计系列】「认证授权专题」JWT认证方案与禁用令牌策略

jwt

对比状态保持机制

APP不支持状态保持

状态保持有同源策略, 无法跨服务器传递

不可逆加密

md5 sha1 sha256

主要用于数据认证, 防止数据被修改

消息摘要 MD

通过哈希算法将任意长度内容转为定长内容, 相同内容哈希值始终相同, 不同内容的哈希值不同(极小概率出现碰撞)

由于其唯一性, 一般将数据的哈希值称为数据的摘要信息, 称为数据的"指纹", 用于检测数据是否被修改

代表算法 sha1 sha256 md5

缺点

哈希算法是公开的, 如果可以获取到明文, 就可以穷举出使用的算法

消息认证 MA

哈希算法基础上混入秘钥, 防止哈希算法被破解, 避免签名被伪造

代表算法 hmacsha256

JWT一般会采用消息认证机制

一般的web应用, 不会将秘钥交给客户端 ,也就表示客户端不会验签服务器的身份

缺点

一旦秘钥泄露, 仍然可以伪造签名

数字签名

利用非对称加密对摘要信息进行加密, 避免摘要信息被伪造

非对称加密采用秘钥对

公钥和私钥

公钥加密, 私钥解密

私钥加密, 公钥解密

私钥可以推出公钥, 公钥无法推出私钥

发送者使用私钥对数据摘要加密(签名), 接收者使用对应的公钥解密, 然后对数据进行哈希处理, 比对摘要信息是否一致

代表算法 RSA

使用场景

安全级别要求比较高的系统, 如银行等

优点

客户端不会像消息认证一样保存秘钥, 而是保存了非对称加密的公钥, 即使客户端被破解, 公钥被获取, 也无法通过公钥生成合法的签名。

缺点

效率低

1.3 JWE

可逆加密

对称加密

代表算法 des 3des aes

非对称加密

代表算法 RSA

慢, 不适合大型数据加密

加密时, 一般公钥加密, 私钥解密, 与签名相反

一般私有只有一方持有, 公钥则可以多方持有(公钥公开)

私钥唯一, 使用私钥签名, 公钥验签, 可以保证签名者身份唯一

加密时, 私钥解密, 保证可以解密者唯一

生成方式 openssl

主要用于数据加密

最佳方案JWE

传输的数据使用对称加密, 生成数据密文, 对称加密秘钥是随机的

为了防止数据篡改, 对数据密文进行摘要认证(一般使用消息认证), 摘要认证的秘钥也是随机的

对称加密的秘钥 和 摘要认证的秘钥 使用非对称加密进行处理

JWE的耗时远高于JWS

用于金融领域

image

安装 pip install authlib

fromauthlib.joseimportJWE

fromauthlib.joseimportJWE_ALGORITHMS

你可能感兴趣的:(☕【权限设计系列】「认证授权专题」JWT认证方案与禁用令牌策略)