OAuth 2.0承载令牌与Mac令牌。为什么不使用Mac代币?

OAuth 2.0承载令牌与Mac令牌。为什么不使用Mac代币?,oauth,bearer-token,Oauth,Bearer Token,我搜索了这个主题中的其他问题,但没有找到答案。如果我错了,请告诉我。 我是这方面的新手,你可以很乐意地纠正我。以下是我目前的想法: 我在网上冲浪了两天,弄清楚授权webrequest的实际技术水平。现在我很快发现OAuth2.0似乎是最常见的标准。但是OAuth2.0本身并不是标准化的。在我看来,这是一个混乱的不同定制每个大公司。但无论如何,有两种技术可以交换授权信息:Mac令牌和承载令牌 在我看来,Mac代币提供了更多的安全性。那么,为什么它没有得到广泛实施呢?我能找到的唯一原因是它有点复杂。

我搜索了这个主题中的其他问题,但没有找到答案。如果我错了,请告诉我。 我是这方面的新手,你可以很乐意地纠正我。以下是我目前的想法:

我在网上冲浪了两天,弄清楚授权webrequest的实际技术水平。现在我很快发现OAuth2.0似乎是最常见的标准。但是OAuth2.0本身并不是标准化的。在我看来,这是一个混乱的不同定制每个大公司。但无论如何,有两种技术可以交换授权信息:Mac令牌和承载令牌

在我看来,Mac代币提供了更多的安全性。那么,为什么它没有得到广泛实施呢?我能找到的唯一原因是它有点复杂。我听说过好几次,如果客户端不是100%可信的,就不推荐使用Mac令牌,因为客户端必须存储秘密。但区别在哪里呢?客户端无论如何都必须存储授权信息。在我看来,它是一个不记名代币还是一个mac秘密并不重要。但是,的不同之处在于,mac秘密(而不是承载令牌)并不是在每次请求时都通过网络提交的

那么你能告诉我为什么不使用mac代币的合理原因吗?(除了稍微努力一点之外) 我错过什么了吗?或者我误解了这两种象征性的技巧


感谢阅读和您的帮助。

在我看来,答案可能很简单:承载令牌机制假设存在SSL/TLS层,而MAC令牌试图取代它。既然SSL/TLS被广泛接受和使用,为什么要做比需要更复杂的事情呢

是的,正如最近在heartbleed漏洞中看到的那样,许多事情并不像预期的那么可靠,但谁能保证MAC的实现也不会出现故障呢


另一点是,正如你提到的,对称秘密的交换。在缺乏绝对可靠的二级通道的情况下,这可能会很棘手。信任客户端也是一个问题。

的危险在于,如果客户端在不坚持SSL/TLS证书有效的情况下继续进行,这是许多客户端无法采取的步骤,那么承载令牌就容易受到中间人攻击。 Mac令牌不受此攻击的影响;可以正确地说,Mac令牌在没有SSL/TLS的情况下提供了一些真实性,或者确实在没有正确使用它的情况下提供了一些真实性

Mac令牌增强了承载令牌的已知弱点

不应使用共享的MAC密钥信任客户端。应为每个客户端生成一个新密钥。用每个客户机自己的密钥信任他们并不比用不记名令牌信任他们更安全

我认为当交换Auhtorization许可证以获得访问令牌时,问题就来了。对于Mac密钥,这将返回对称密钥。如果客户端在检查SSL/TLS证书时马虎,那么这也容易受到MITM攻击


简而言之,Mac令牌可能不太受欢迎,因为它更复杂,但您仍然需要正确地执行SSL/TLS以使其安全,如果您这样做,那么承载令牌也将是安全的。

如果正确使用SSL/TLS,并且以保密和自助方式发出的客户端凭据,那么采用MAC而不是承载令牌没有多少优势。只会增加复杂性。客户有责任维护客户的机密性。当然,也有一些客户更喜欢使用MAC思维,从而提高了安全性

通过mac身份验证,您可以将mac机密存储在安卓设备或tpm pc设备的安全存储中。。。这样,您就无法检索该秘密,但您可以在不知道该秘密的情况下在此存储中进行hmac挑战。。。对于tls证书客户端,您必须将证书发送到服务器,并且可以被拦截(使用mitm).

好的,我理解您的观点。但我认为MAC Token不会强制取代SSL/TLS。最好的选择是两者兼用。SSL/TLS和MAC令牌身份验证,因此您比使用承载令牌具有更好的安全性。还是我错了?嗯,我可能对“替换”一词不太准确。承载令牌值必须受到保护,通常通过SSL/TLS进行保护。如果由于某种原因,您不能使用HTTPS,则不能使用承载令牌方案。尽管如此,您仍然可以依赖MAC身份验证机制。IETF文件明确指出:“该机制的主要设计目标是简化和改进不愿意或无法为每个请求使用TLS的服务的HTTP身份验证。特别是,该机制利用初始TLS设置阶段在客户端和服务器之间建立共享秘密。”好的。是的,现在我更好地理解了你的意思=)我和一位安全专家谈过,他告诉我他永远不会使用没有加密(HTTPS)的mac身份验证,最好的选择是使用带有加密的mac令牌。但我知道你的意思。是的,我绝对支持你。不管怎样,没有SSL/TLS是不行的,这太不专业了。我认为你是对的,它只是没有被使用,因为它更复杂。因为Mac令牌在各个方面都更安全。不管你是否能信任客户,我绝对不同意你。SSL/TLS不是100%安全的。有弱点。例如中间人攻击。如果用户决定继续。保安不见了。如果这种安全性失败,还有另一种可靠的机制来保护身份验证。