计算机网络面试题, JWT Token 听过吗?
计算机网络面试题, JWT Token 听过吗?
QA
Step 1
Q:: 什么是JWT (JSON Web Token)
?
A:: JWT(JSON Web Token)是一种基于JSON的令牌格式,用于在各方之间安全地传输信息。JWT由三个部分组成:Header(头部)、Payload(有效载荷)和Signature(签名)。头部通常指定签名算法,负载包含声明(claims),而签名则用于验证消息的真实性和完整性。
Step 2
Q:: JWT的典型结构是什么样的?
A:: JWT的结构由三个部分组成,通常通过点(.
)连接:
1. Header:
包含令牌类型和签名算法。
2. Payload:
包含声明(如用户信息、权限等)。
3. Signature:
由Header、Payload以及一个密钥通过签名算法生成,用于确保数据未被篡改。
Step 3
Q:: JWT如何保证安全性?
A:: JWT通过签名机制来保证安全性,签名是通过Header、Payload和一个秘密密钥生成的。接收方可以使用相同的密钥和签名算法验证JWT的完整性。如果签名不匹配,则说明JWT已被篡改。此外,JWT通常不应在未加密的通信渠道中传输,建议使用HTTPS来保证传输过程的安全性。
Step 4
Q:: JWT和Session的区别是什么?
A:: JWT是无状态的,不需要在服务器端保存任何会话数据,客户端可以通过携带JWT来进行身份验证。Session通常是有状态的,服务器端会维护一个会话数据,客户端通过Cookie或者其他方式携带Session ID来进行验证。JWT适用于分布式系统和微服务架构,而Session更适用于传统的单体应用。
Step 5
Q:: JWT的使用场景有哪些?
A:: JWT通常用于以下场景:
1.
用户认证:通过JWT携带用户信息,进行身份验证。
2.
单点登录(SSO):用户登录后,JWT可用于不同的子系统之间传递身份信息。
3.
微服务通信:在微服务架构中,服务之间可以通过JWT进行安全通信。