RESTful API需要处理用户的认证和授权。这通常通过OAuth、JWT(JSON Web Tokens)等机制来实现。
JWT
全称JSON Web Token,是一种用于身份验证和信息交换的开放标准(RFC 7519)。它定义了一种紧凑的、自包含的方式,用于在双方之间安全地传输信息作为JSON对象。这些信息可以被验证、信任,因为它们是数字签名的。
JWT主要由三部分组成:Header(头部)、Payload(负载)和Signature(签名)。
- Header:头部包含了关于JWT的元数据,描述了JWT的签名方法、类型等信息。例如:
{
"alg": "HS256",
"typ": "JWT"
}
这里alg表示签名算法(例如HS256表示HMAC SHA256),typ表示这个令牌的类型是JWT。
2. Payload:负载部分包含了一些声明,这些声明是关于实体(通常是用户)和附加的元数据。这些声明有三种类型:注册声明(如iss发行人,exp过期时间等)、公开声明(如name用户名)和私有声明。例如:
{
"sub": "1234567890",
"name": "John Doe",
"admin": true
}
- Signature:签名是对前两部分的签名,防止数据被篡改。签名需要使用一个密钥,这个密钥只有服务器知道,用于验证JWT的发送者是谁,并确保消息在传输过程中没有被篡改。签名的计算方式是将Header和Payload的Base64编码结果进行拼接,然后使用Header中指定的签名算法进行签名。 </