MST
星途 面试题库

面试题:安全认证:JWT在跨域资源共享中的基本原理

请阐述JWT(JSON Web Token)在跨域资源共享场景下,是如何实现安全认证的基本原理,包括JWT的组成部分以及它们在认证流程中的作用。
14.5万 热度难度
后端开发安全认证

知识考点

AI 面试

面试题答案

一键面试

JWT跨域安全认证基本原理

在跨域资源共享场景下,客户端向服务端请求认证,服务端验证通过后生成包含用户身份等信息的JWT返回给客户端。客户端后续请求资源时,在请求头中携带JWT。服务端收到请求后,验证JWT的合法性,若合法则允许访问资源。

JWT组成部分及认证流程作用

  1. Header(头部)
    • 组成:通常包含两部分,令牌的类型(如JWT)和使用的哈希算法(如HMAC SHA256或RSA)。例如:{ "alg": "HS256", "typ": "JWT" }
    • 作用:在认证流程中,服务端通过头部信息知道使用何种算法来验证签名,同时识别出这是一个JWT。它会被Base64Url编码后成为JWT的第一部分。
  2. Payload(负载)
    • 组成:包含声明(claims),这些声明是关于实体(通常指用户)和其他数据的陈述。有三种类型的声明:注册声明(如iss、exp、sub等)、公共声明和私有声明。例如:{ "sub": "1234567890", "name": "John Doe", "iat": 1516239022 }
    • 作用:在认证流程中,服务端可以从负载中获取用户相关信息,用于授权决策等。不过由于负载可以被解码查看,不建议存放敏感信息。它同样会被Base64Url编码后成为JWT的第二部分。
  3. Signature(签名)
    • 组成:要创建签名部分,需要使用编码后的header、编码后的payload、一个密钥(secret)和header中指定的签名算法。例如使用HMAC SHA256算法,签名会按如下方式创建:HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)
    • 作用:在认证流程中,服务端接收到JWT后,会使用相同的算法和密钥重新生成签名,并与JWT中的签名进行对比。若两者一致,则说明JWT未被篡改,且是由拥有正确密钥的服务端生成的,从而确认JWT的合法性。