OAuth 2.0 两条腿身份验证与 SSL/TLS

OAuth 2.0 two-legged authentication vs SSL/TLS

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

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

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

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

使用 OAuth 2.0 两条腿方案进行服务器到服务器通信(不涉及用户)是否有真正的优势?

注意:我确实找到了一个有点类似的post here,但是那个已经很老了,但我觉得在这个问题上没有给出令人满意的答案。

抱歉,如果您已经知道这一点,但在您的 post 中不清楚。

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

您对 OAuth 的理解是正确的...它用于授权个人而不是 organizations\servers。两条腿的 OAuth 是一个被抛出的术语,它包含各种替代的 OAuth 流程,所有这些流程都不遵循标准。

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

我会回复这条评论:

My question is that, assuming I am using SSL with proper client/server certs to identify each machine, what value would using OAuth (2 legged or similar) on top of that to authorize the servers to one another (assuming there is no user involved). Thanks – Locksleyu

总结:我不会费心去做这两件事。

详细信息:两条腿的 OAUTH 仅与消费者秘密一样安全。类似地,相互认证 SSL 仅与私钥一样安全。我假设您会将这些存储在每台服务器上的某个加密存储区中。由于两者都存储在同一个地方,我看不到添加 OAUTH 会带来额外的安全性。

现在,如果您正在考虑在相互身份验证 SSL 和带身份验证的标准 SSL 之间做出选择,也许 OAUTH 可以在那里发挥作用。我会选择那些看起来更容易的选项。因此,如果您有一个 OAUTH 系统并且可以轻松地向其添加服务器身份验证,也许这就是可行的方法。否则,只需使用相互身份验证 SSL。配置起来往往有点麻烦,但设置后运行良好且快速。

回答你的问题"what value would using OAuth (2 legged or similar) on top of that to authorize the servers to one another (assuming there is no user involved)."

您可以参考以下内容

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