25

如果所有 api 调用都是通过 https 发送的,HMAC 是否会增加任何额外的安全性?例如,在 oauth 2 中,客户端将其密钥发送给提供者,而无需任何散列。这是否被认为是安全的,因为它是通过 https 的?虽然不是严格的 oauth,但在此调用中使用 HMAC 会使 oauth 2 更安全吗?如果是这样,为什么这不是 oauth 2 的标准部分?

4

2 回答 2

16

OAuth 2 标准要求授权服务器必须在其所有端点上使用 HTTPS,并且客户端应该使用受 HTTPS 保护的回调。由于消息内容(考虑 OAuth 的标头、查询参数和片段)只有服务器和客户端知道,所以使用 HTTPS 连接被认为是安全的。因此,对授权请求使用单独的签名没有任何好处,这就是为什么标准中甚至没有提到这种签名的原因。

但是,这不一定适用于响应。如果客户端收到对未受保护回调的授权响应,则无法验证其有效性。在这种情况下,攻击者可以向客户端发送任意授权结果。添加带有回调参数的签名,您可以避免这种情况。但是,使用带有 HTTPS 回调的相互客户端/服务器身份验证似乎是一个更好的解决方案。

虽然在授权期间使用签名并没有真正的好处,但它们对于访问受保护的资源以避免窃取访问令牌可能很有用。这就是 MAC 令牌类型在标准中的原因,请参阅第 7.1 节

于 2012-06-27T08:47:47.247 回答
0

HMAC 用于确定您是谁的身份验证,https 用于传输安全性,以确保中间的一个人可以看到您的传输内容。

Oauth 2 授权服务器使用密钥或密码来确定您的身份。Oauth2 资源服务器使用来自授权服务器的令牌来确定您的身份。是否使用 https 取决于您是否要保护您的密钥和令牌。

于 2016-05-24T09:35:25.383 回答