OAuth 2.0双腿身份验证与SSL / TLS

时间:2015-04-14 20:22:23

标签: api authentication ssl oauth https

我有两个企业服务器需要以安全的方式进行通信,并且正在使用SSL(使用客户端/服务器证书来验证双方)与使用OAuth 2.0的双向身份验证(可选地使用MAC令牌或JWT令牌)进行比较。

历史上,OAuth似乎是为完全不同的目的而创建的(三方案例,用户允许服务在某处访问某些数据),尽管两条腿现已集成到OAuth 2.0规范中,我所看到的两条腿OAuth 2.0似乎没有提供比SSL更多的额外保护。

我能想到的唯一一点是,OAuth可能比SSL更容易配置,并且容易犯错,例如接受可能危及安全性的错误SSL证书。但是我不确定这是否足以与OAuth一起使用。

请注意,我将这些选项作为单独的选项提及,但我认为使用OAuth可能需要在HTTPS / SSL之上使用它,因此两者都将被使用。

使用OAuth 2.0双管方案进行服务器到服务器通信(没有用户参与)是否有任何真正的优势?

注意:我确实发现了一个有点类似的帖子here,但这已经很老了,但我觉得在这件事上没有得到满意的答案。

3 个答案:

答案 0 :(得分:14)

如果您已经知道这一点,请道歉,但在您的帖子中并不清楚。

OAuth和SSL \ TLS是OSI模型的两个独立层。 OAuth用于身份验证,在第7层中位居第一,而SSL \ TLS用于第4层中的传输安全性。很容易将SSL与客户端证书混淆,因为它们都使用PKI。

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

在我看来,您希望使用客户端证书来保护您的服务器 - 服务器通信...所有真正需要的是单个x509证书,可以用作SSL(传输安全性)和客户端证书(授权) ;虽然使用2个证书是常态。

答案 1 :(得分:3)

我将回复此评论:

  

我的问题是,假设我正在使用具有适当客户端/服务器证书的SSL来识别每台机器,那么使用OAuth(2条腿或类似机构)来为彼此授权服务器有什么价值(假设有没有用户参与)。谢谢 - Locksleyu

总结:我不打算两者兼得。

详细信息:双腿OAUTH仅与消费者秘密一样安全。类似地,相互身份验证SSL仅与私钥一样安全。我假设您将这些存储在每台服务器上的某个加密存储中。由于两者都存储在同一个地方,因此我发现添加OAUTH没有额外的安全性。

现在,如果您正在考虑在相互身份验证SSL和标准SSL之间进行身份验证,那么OAUTH可能会在那里发挥作用。我会选择那些选项似乎更容易。因此,如果您有一个OAUTH系统并且可以轻松地向其添加服务器身份验证,那么这可能是最佳选择。否则,只需使用相互身份验证SSL。配置起来往往有点麻烦,但一旦设置就能很好地运行。

答案 2 :(得分:0)

回答您的问题“在此之上使用OAuth(两腿式或类似的双腿)来授权服务器彼此(假设不涉及用户),将获得什么价值。”

您可以在下面参考

https://salesforce.stackexchange.com/questions/93887/mutual-authentication-two-way-ssl-oauth