• 1.什么是jwt?jwt的作用是什么?2.jwt的三个部分是什么?三者之间的关系如何?3.JWT运行的流程是什么


    1. **什么是JWT?JWT的作用是什么?**

       JWT(JSON Web Token)是一种用于在不同系统或组件之间传输信息的紧凑且安全的标准。它的作用主要有两个方面:
       
       - **身份验证(Authentication)**:

    JWT通常用于验证用户的身份。当用户登录时,服务器会生成一个JWT,并将其发送给客户端。客户端随后在每个请求中包含JWT,服务器使用它来验证用户的身份,以便允许或拒绝对受保护资源的访问。
       
       - **授权(Authorization)**:

    JWT还可以包含有关用户的授权信息,例如用户在系统中的角色或权限。这使得服务器可以根据JWT中的信息来控制用户对资源的访问权限。

    2. **JWT的三个部分是什么?三者之间的关系如何?**

       JWT由三个部分组成,这三个部分由点号`.`分隔开来,它们是:
       
       - **标头(Header)**:

    标头部分通常包含有关JWT的元数据,如令牌的类型(通常为"JWT")和使用的签名算法(例如HMAC SHA256或RSA)。标头是一个JSON对象,经过Base64编码后放在JWT的第一个部分。
       
       - **载荷(Payload)**:

    载荷部分包含一组声明(claims),声明是关于实体(通常是用户)和其他数据的陈述。有三种类型的声明:
       
         - **注册声明(Registered Claims)**:这些是一些预定义的声明,如令牌的主题("sub")发行者("iss")、受众("aud")和过期时间("exp")等。
         
         - **公共声明(Public Claims)**:这些是用户自定义的声明,用于在特定应用程序中传递有关实体的信息。
         
         - **私有声明(Private Claims)**:这些是用户自定义的声明,通常用于在双方之间共享信息。
       
       - **签名(Signature)**:

    签名部分用于确保JWT的完整性和验证其来源。它由标头、载荷和一个密钥组合生成,具体取决于所选的签名算法。签名可确保JWT在传输过程中没有被篡改。
       
       三者之间的关系是:标头和载荷是明文的JSON数据,它们通过Base64编码后连接在一起,用`.`分隔,形成JWT的第一部分。然后,签名被附加在JWT的第二部分,形成最终的JWT。因此,JWT的结构是“Header.Payload.Signature”。

    3. **JWT(token字符串)的运行流程是什么?**

       JWT的运行流程通常涉及以下步骤:

       - **身份验证**:
         
         1. 用户通过提供用户名和密码等凭据进行身份验证。
         2. 服务器验证凭据的有效性。
         3. 如果验证成功,服务器生成一个JWT,其中包含有关用户的信息和必要的授权信息。
         4. 服务器将JWT发送给客户端。
       
       - **请求授权资源**:
       
         1. 客户端在请求中包含JWT,通常在请求的头部(Authorization header)中。
         2. 服务器接收请求并解析JWT。
         3. 服务器验证JWT的签名以确保其完整性和来源。
         4. 如果JWT有效,服务器检查其中的声明以确定用户是否被授权访问请求的资源。
         5. 如果用户被授权,服务器提供请求的资源。

    4.详解链接

    JWT在Java中的使用详解_java jwt payload_newCodeWorker的博客-CSDN博客

            总之,JWT在身份验证和授权过程中充当了令牌,用于传递用户身份和授权信息,使得服务器可以在无需维护会话状态的情况下验证用户并授予访问权限。这使得JWT在分布式系统和API身份验证中特别有用。

  • 相关阅读:
    Java手写位运算算法和位运算算法应用拓展案例
    某金融企业核心存储POC测试及选型经验
    时间触发嵌入式系统设计——调度器
    2022行情变了,请各位做好一年内随时失业的准备
    【Linux】安装软件与运行程序
    C++初阶-模板初阶
    GBase 8c V3.0.0数据类型——模式可见性查询函数
    Qt OpenGL(二十四)——Qt OpenGL 核心模式-实现彩色三角形
    leetcode 684. 冗余连接
    Java Spring拦截器优化实践: 专注于API路径拦截
  • 原文地址:https://blog.csdn.net/qq_58647634/article/details/133122620