MST

星途 面试题库

面试题:安全认证之JWT在API网关中的基本应用

请简述在基于JWT的API网关设计中,如何实现用户身份验证和权限控制的基本流程。并且说明JWT的结构组成以及每个部分的作用。
45.5万 热度难度
后端开发安全认证

知识考点

AI 面试

面试题答案

一键面试

用户身份验证和权限控制基本流程

  1. 用户登录:用户在客户端输入用户名和密码,发送登录请求到认证服务器。
  2. 认证:认证服务器验证用户名和密码。若正确,根据用户信息生成包含用户身份及权限信息的JWT。
  3. 返回JWT:认证服务器将生成的JWT返回给客户端。
  4. 客户端存储JWT:客户端收到JWT后,通常存储在本地(如localStorage、sessionStorage或cookie)。
  5. API请求:客户端在后续请求API时,将JWT放在请求头(如Authorization: Bearer )中发送给API网关。
  6. 网关验证JWT:API网关接收到请求,提取JWT并验证其有效性(如签名验证、过期时间检查)。若无效,返回未授权错误。
  7. 权限检查:若JWT有效,API网关从JWT中提取权限信息,检查用户是否有权限访问请求的资源。若有权限,将请求转发到后端服务;否则返回权限不足错误。

JWT结构组成及作用

JWT由三部分组成,通过点(.)分隔:Header(头部)、Payload(负载)、Signature(签名)。

  1. Header(头部)
    • 作用:包含两部分信息,一是令牌的类型,通常为JWT;二是使用的签名算法,如HMAC SHA256或RSA。这部分告知接收者如何验证签名。
    • 示例:{"alg": "HS256", "typ": "JWT"}
  2. Payload(负载)
    • 作用:存放用户相关的声明(claims)信息,这些信息可以是用户身份信息、权限信息等。分为注册声明(如iss、exp等)、公共声明和私有声明。
    • 示例:{"sub": "1234567890", "name": "John Doe", "iat": 1516239022}
  3. Signature(签名)
    • 作用:用于验证消息在传输过程中有没有被更改,并且,在使用私钥签名的情况下,还可以验证JWT的发送者身份。

    • 生成方式:需要使用编码后的Header、编码后的Payload、一个密钥(secret)和Header中指定的签名算法来生成。