Oauth库是通用的还是依赖于社交网站?

时间:2011-12-17 13:41:45

标签: authentication oauth

我有一个基本的疑问。 我遇到过许多开源的OAuth libs.But所有这些都依赖于他们所服务的社交网络。 我的问题是,如果所有OAuth库都依赖于网站,或者是否有任何真正通用的OAuth库。

由于

3 个答案:

答案 0 :(得分:1)

我不确定你对社交网络的依赖是什么意思.Outh是许多成熟的行业协议的标准化和组合智慧。它类似于当前使用的其他协议(Google AuthSub,AOL OpenAuth,Yahoo BBAuth,即将推出的API,Flickr API,Amazon Web Services API等)。每个协议都提供了一种用于交换访问令牌的用户凭证的专有方法

每个社交服务提供商都已实施这些OAuth规范,无论是Google / Yahoo / MSN / facebook。 唯一的区别可能在于每个服务提供商实施这些规范的方式。

简而言之,您还可以为您的应用程序提供OAuth,您只需要实现这些规范并设置服务器以让应用程序的使用者使用它。

答案 1 :(得分:1)

TL; DR OAuth2实现类似,但在某些细节上有所不同。如果某个库不是为特定的服务器实现而设计或测试的,那么它很可能根本无法使用它。我还没有看到一个支持多个提供商的库。

长篇故事: 虽然所有OAuth2实现都是类似的,但是devil就是详细的。 例如,比较Facebook和Google OAuth2协议的第1步(请求代码):

  • 使用Facebook注册并将整个域列入白名单,对于Google,您列出了特定的URL。
  • Facebook允许您将任意& params附加到redirect_uri,Google只允许传递& state URL param
  • Google要求指定response_type =代码参数,Facebook不

获取访问令牌也不完全兼容:

  • Google仅允许POST请求,Facebook支持POST和GET
  • Google返回JSON响应,Facebook - 一个URL字符串
  • Facebook要求与步骤1完全相同的redirect_uri,Google不会验证&州的存在

我不打算整理所有偏差的综合清单。 这只是我在阅读公共文档和试验API时注意到的一些例子。 VKontakte主要使用Facebook的怪癖,但在第2步返回JSON,类似于谷歌。

在你跳过所有篮球并获得访问令牌后,事情变得更加困难。 OAuth不会尝试涵盖API的结构或访问方式,因此您需要完全不同的例程来从每个网络中获取用户名和电子邮件。

答案 2 :(得分:0)

OAuth 1是一个规范,提供商需要遵守规范或说明偏离规范的原因。

OAuth 2还不是最终规范,但是草案仍然是,我认为大多数提供商都很好地遵守了草案。

简而言之,一个好的OAuth 1库可以与任何实现良好的提供程序一起使用。我对OAuth 2的经验较少,但我很确定那些库的标准化程度较低。