JWT 和保护 https REST api
JWT and securing https REST api
我正在设计一项服务,其中服务器 A 将 POST 一些 JSON 数据通过 https 发送到服务器 B。
我正在考虑使用 JWT 进行身份验证并传递一些声明,例如:iss
、aud
、iat
、exp
和 jti
.当服务器 B 收到来自服务器 A 的消息时,这些将由服务器 B 验证。
{
"iss": "api.server-a.com",
"aud": "api.server-b.com",
"iat": 1356999524,
"exp": 1407019793,
"jti": "id123456"
}
问题 1: 服务器 B 是否也应该 return 带有回复的 JWT 令牌,以便我可以验证回复?或者这是不必要的,因为它是 https?
问题 2: 与通过 https 仅使用带有简单 API 令牌的 HTTP 基本身份验证相比,这对安全性有任何真正的好处吗?难道 https 不能像检查 iat
、exp
和 jti
声明一样防止重放攻击吗?
A1: 当 JWT 正确验证时,服务器 B 将只 return 客户端请求并有权访问的数据。如果无法解决问题,则会出现 return 错误。响应中数据的完整性和真实性由 SSL 服务器证书验证保证。尽管您的服务器可以选择 return 包含 JWT 的响应(如果需要),但对 JWT 响应没有固有要求。
A2: JWT 的安全优势不仅仅在于防止重放攻击(SSL 层可能已经处理也可能不处理,具体取决于密码使用),而且还包括客户端识别以及以明确、标准化和可验证的方式在范围(例如权限)和时间(例如到期)方面添加限制的能力。
我正在设计一项服务,其中服务器 A 将 POST 一些 JSON 数据通过 https 发送到服务器 B。
我正在考虑使用 JWT 进行身份验证并传递一些声明,例如:iss
、aud
、iat
、exp
和 jti
.当服务器 B 收到来自服务器 A 的消息时,这些将由服务器 B 验证。
{
"iss": "api.server-a.com",
"aud": "api.server-b.com",
"iat": 1356999524,
"exp": 1407019793,
"jti": "id123456"
}
问题 1: 服务器 B 是否也应该 return 带有回复的 JWT 令牌,以便我可以验证回复?或者这是不必要的,因为它是 https?
问题 2: 与通过 https 仅使用带有简单 API 令牌的 HTTP 基本身份验证相比,这对安全性有任何真正的好处吗?难道 https 不能像检查 iat
、exp
和 jti
声明一样防止重放攻击吗?
A1: 当 JWT 正确验证时,服务器 B 将只 return 客户端请求并有权访问的数据。如果无法解决问题,则会出现 return 错误。响应中数据的完整性和真实性由 SSL 服务器证书验证保证。尽管您的服务器可以选择 return 包含 JWT 的响应(如果需要),但对 JWT 响应没有固有要求。
A2: JWT 的安全优势不仅仅在于防止重放攻击(SSL 层可能已经处理也可能不处理,具体取决于密码使用),而且还包括客户端识别以及以明确、标准化和可验证的方式在范围(例如权限)和时间(例如到期)方面添加限制的能力。