OAuth 2.0两步验证与SSL/TLS的区别

16
我有两个企业服务器需要以安全的方式进行通信,正在比较使用SSL(使用客户端/服务器证书验证双方)与使用OAuth 2.0的双向身份验证(可选使用MAC令牌或JWT令牌)。
历史上,OAuth似乎是为完全不同的目的而创建的(用户允许服务访问某个地方的数据的3个步骤案例),尽管现在OAuth 2.0规范中已经整合了双向身份验证,但从我所见,OAuth 2.0的双向身份验证似乎与SSL相比没有提供更多的额外保护。
我能想到的唯一一点是,OAuth可能比SSL更容易配置,并且很容易出现诸如接受错误的SSL证书之类的错误,这可能会 compromise 安全性。但是我不确定这是否足以选择OAuth。
请注意,我将其列为单独的选择,但我认为使用OAuth可能会涉及在HTTPS / SSL之上使用它,因此两者将同时使用。
在服务器之间的通信中使用OAuth 2.0的双向身份验证方案是否有任何真正的优势?
注:我找到了一个类似的帖子here,但那篇文章很旧,我认为它没有给出令人满意的答案。
3个回答

26

如果您已经知道这个内容,那么我很抱歉,因为在您的帖子中并不清楚。

OAuth和SSL / TLS是OSI模型的两个单独的层。OAuth用于身份验证,位于第7层的顶部,而SSL / TLS用于第4层的传输安全。易于将SSL与客户端证书混淆,因为它们都使用PKI。

您对OAuth的理解是正确的...它用于授权个人而不是组织\服务器。 2-legged OAuth是一个被提及的术语,它包括各种替代的OAuth流程,所有这些流程都不遵循标准。

在我看来,您希望使用客户端证书来保护您的服务器之间的通信......实际上只需要一个单独的x509证书,可以用作SSL(传输安全)和客户端证书(授权);尽管使用2个证书是常规做法。


4
感谢您的回复。明确一下,我所说的“2 个腿”的意思是“客户端凭据”授权类型,我相信这在OAuth 2.0协议规范中有记录。我的问题是,假设我正在使用带有适当客户端/服务器证书的SSL来识别每台机器,那么在此基础上使用OAuth(2个腿或类似)对服务器进行授权,使它们互相认可(假设没有用户参与),会产生什么价值?谢谢。 - Locksleyu

4

我来回复这条评论:

我的问题是,假设我正在使用SSL和适当的客户端/服务器证书来识别每台机器,那么在此基础上使用OAuth(2-legged或类似)来授权服务器之间是否有价值(假设没有用户参与)。谢谢- Locksleyu

总结:我不会费心做两者。

详细信息:2-legged OAUTH只有在消费者密钥正确时才安全。同样,相互认证SSL只有私钥安全时才安全。我假设您将在每个服务器上存储它们在某个加密存储中。由于两者都存储在同一位置,因此我认为添加OAUTH没有额外的安全性。

现在,如果您在相互认证SSL和带身份验证的标准SSL之间做出选择,也许OAUTH可以在那里发挥作用。我会选择其中更容易的选项。因此,如果您已经拥有一个OAUTH系统,并且可以轻松地添加服务器身份验证,则可能是这种方式。否则,只需使用相互认证SSL。它往往很麻烦,但一旦设置好,就可以快速有效地运行。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接