JWT 认证机制

    xiaoxiao2025-01-28  43

    JWT认证机制: 做为目前前后端分离开发中用户身份认证最流行一种解决方案,叙述一下我的理解,以供参考。

    Session 的优缺点:

    缺点:

    session信息存在服务器,如果用户登录过多,会过多占用服务器存储空间。session依赖于cookie,如果cookie被利用,可能会产生CSRF跨站请求伪造。对于分布式的网站应用,如果session是存在服务器内存中,session共享会成为问题。

    优点:

    session可以存放敏感数据

    JWT认证机制和session认证机制有何区别?

    ⚀ 优点:jwt token存储到客户端,不占用服务器存储空间。 ⚀ 缺点:jwt token不要存敏感信息。

    客户端与服务器之间的交互过程,做了一张图来分析,如下图所示: JWT token 是一个字符串,由3部分组成,之间以 . 隔开

    # 生成的JWT token 字符串 eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ

    三部分可以分为header,payload,signature

    header: 头部 { "token类型", "签名加密算法" } # 使用base64对头部内容进行编码加密,生成字符串就是header payload: 载荷:保存有效的数据。 { "user_id": "用户id", "username": "用户名", "mobile": "手机号", ... "exp": "jwt token有效时间" } # 使用base64对载荷内容进行编码加密,生成字符串就是payload signature: 签名信息,防止jwt token被伪造。 签名验证。 # 签名生成过程就是:服务器在生成jwt token时,会将header和payload字符串进行拼接,用.隔开。之后会 使用一个只有服务器知道的密钥对拼接后的内容进行加密,signature的内容就是加密之后生成的字符串。 For example:

    客户端和服务器之间的关系就和我们每个人一样!!

    我们每个人出生都有一个身份信息去辨识,我们现在把服务器比作公安局 ,服务器生成的字符串 JWT token 就是一个身份证号。 现在我们满足年龄需要使用身份证时,就要去公安局去办理领取,公安局把办理好身份证交给你,下次你在拿身份证过来公安局用的时候,你就把你的身份证交给公安局去验证,而如何知道你身份真假,自然就有中间过程的防伪技术

    JWT认证使用注意点 payload不要存放敏感数据。服务器密钥需要保存好。如果可以,请使用https网络协议。

    希望可以帮助到工作中需要的程序员们!

    最新回复(0)