如果所有API调用都是通过https进行的,那么HMAC是否必要?

时间:2012-06-26 08:55:16

标签: https oauth-2.0 hmac

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

2 个答案:

答案 0 :(得分:13)

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

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

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

答案 1 :(得分:0)

HMAC用于确定您的身份,https用于确保在中间位置的传输安全性可以查看您的传输内容。

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