OAuth是一条“双向”的街道吗?

时间:2011-06-01 14:24:22

标签: oauth

我的意思是,假设我有两个组织ACME和Boring Corp。

ACME的用户想要登录Boring Corp.访问一些将通过Boring Corps网站查看的内容。他们去Boring.com并将它们重定向到ACME登录。经过验证后,他们会被重定向回Boring Corp进行XYZ并访问ABC。

但是,他们还希望在任何时候都可以从ACME网站页面查看Boring Corp.的XYZ和ABC信息。所以他们基本上是“给予ACME公司访问他们在Boring Corp上拥有的数据的权限,但他们的登录凭据完全存储在ACME上和。”

他们不仅通过ACME凭证登录Boring Corp.网站并在Boring Corp.网站上进行操作,而且他们还要求从Boring Corp.网站返回数据,以便在ACME网站上查看。全部来自同一个ACME登录。

进一步分解......

  • 用户帐户存储在ACME网站
  • 用户访问Boring Corp,被重定向到ACME登录,并返回Boring Corp进行各种操作
  • 对Boring Corp的行动产生了存储在Boring Corp网站上的数据

当天晚些时候......

  • 用户希望查看存储在Boring Corp网站上的一些数据,这些数据是根据他在那里采取的措施创建的。
  • 所以他登录到ACME网站,该网站为该用户提取了Boring Corp的数据,因此他可以在ACME网站上查看

因此,他通过ACME登录登录Boring Corp,在Boring Corp执行Actions,然后又从ACME网站查看他在Boring Corp拥有的数据(从那里获取的数据创建的数据)。所有使用相同的ACME登录。

希望更清楚。

这是OAuth合适的情况吗?

2 个答案:

答案 0 :(得分:1)

我认为您混淆了两件事:身份验证授权。身份验证与凭据,具有访问权限的授权有关。 OAuth本身只处理授权,所以我假设您正在使用OpenID或其他东西来执行身份验证阶段。

在这种情况下,你有:

  1. ACME的身份验证服务;
  2. Boring Corp。的授权服务。
  3. 没有理由这些是不兼容的,但这些是两种不同的服务:对Boring Corp提供的资源的访问与Boring Corp对您进行身份验证的方式是分开的。在这种情况下,它们也在不同的机器/网络上运行。

    那么,回答你的问题“OAuth是双向的吗?”:不,不是。但是,您可以实现您想要实现的目标。它可能是一个合适的解决方案,但你提出了一些解决方案而没有任何描述要求,所以我们无法判断这一点。

答案 1 :(得分:0)

在OAuth中,涉及3点,“用户,消费者和提供者......简单的例子:Facebook说话......用户将是我们(你,我和凡人......)消费者:任何应用程序(来自Facebook以外的其他开发公司,第三方应用程序)提供商:facebook

在我的公司..用户:(凡人...你和我)消费者:由我公司提供商开发的应用程序:我的公司

开发了OAuth,以便第三方应用无法访问整个基础公司数据库,只能访问有关提供商数据库的用户的某些信息。

这就是为什么它会生成不同类型的令牌,以便第三方应用程序不会获取您的密码或邮件或任何您不会在Facebook外面发布的内容,该令牌是对应用程序进行身份验证以获取某些权限的权限有关用户的信息。

当涉及到我的公司,即提供商和消费者时,我的公司数据库访问仅适用于公司开发团队。我公司外的任何人都无法访问de DB。

总结:OAuth是有史以来最伟大的auth协议,但是......贵公司真的需要吗?公司外面是否有人使用您的资源?是否有第三方开发?这才是真正的问题...

为了让我的观点更加清晰,请查看与客户进行比较的提供商数量,每个教程总是提供相同的提供商:Facebook,Twitter,谷歌,雅虎等......

查看有多少客户?必须至少有一百万或十亿或一个我们无法发音的数字(为Facebook twitter或google开发的每个应用程序都有严格的说明,要通过OAuth进行身份验证

这就是为什么我不能在近乎现在使用OAuth ...我认为你不应该....