我正在使用 Facebook Spring Social 库。
在连接安全时(针对中间人攻击等),Spring Social 库和 Facebook 之间的 OAuth 是否跳舞?如果没有,我需要做些什么来确保它的安全?
我有点担心的原因是Spring 文档提到 Facebook 使用 OAuth 2,我相信 OAuth 2 已经简化,它依赖 HTTPS 来保护 OAuth 舞蹈。
PS 我的网络应用在 HTTP 上运行
是的,Spring Social 在与 Facebook 合作时确实支持通过 HTTPS 的 OAuth2,无论是在其 API 绑定中还是在 OAuth2“舞蹈”中。请注意https://github.com/SpringSource/spring-social-facebook/blob/master/spring-social-facebook/src/main/java/org/springframework/social/facebook/connect/FacebookOAuth2Template.java中的 URL Spring Social 在执行 OAuth2 “舞蹈”时使用 HTTPS 的证据。
如果没有,那么不仅在安全方面是个坏主意,而且根本行不通。当涉及访问令牌时,Facebook 不允许您使用它的 API,除非它通过 HTTPS。如果您尝试通过 HTTP 将访问令牌传递给任何 API 端点(即使不安全且即使访问令牌是伪造的),您也会收到错误消息。例如,将您的浏览器指向 http://graph.facebook.com/gopivotal?access_token=fasddasf,您将收到错误消息。
所以是的,Spring Social 在使用 Facebook 时支持 HTTPS。如果没有,它就根本行不通。
我们正在广泛使用它(一个大项目)。我们考虑了几种处理此功能的方法,最后得出结论,使用 spring 是足够安全的。
实际上,我们系统的那部分是用 JavaScript 编写的,在 NodeJS 上运行,我们将其转换为 Java,因为我们对 Spring 的实现更有信心。
另外,我认为他们在比较 OAuth 1/2 时所说的简化部分是舞蹈。往返次数少。