Ruby on rails OAuth2和Omniauth之间的区别

Ruby on rails OAuth2和Omniauth之间的区别,ruby-on-rails,oauth,omniauth,Ruby On Rails,Oauth,Omniauth,我已经读了很多关于Omniauth和OAuth2的书,以及Omniauth是如何使用OAuth的,但是我真的不明白每一本书的目的是什么 例如,我知道使用Omniauth,我可以使用 @auth['omniauth.params'] 但是如果我使用的是OAuth,没有Omniauth,我也可以这样做吗 我真正的问题是,我不理解它们之间的区别,Omniauth在哪里结束,OAuth在哪里开始,我可以用Omniauth做什么,这在OAuth中是不可能的。在这个答案中,我假设您使用的是Rails(或其他

我已经读了很多关于Omniauth和OAuth2的书,以及Omniauth是如何使用OAuth的,但是我真的不明白每一本书的目的是什么

例如,我知道使用Omniauth,我可以使用

@auth['omniauth.params']

但是如果我使用的是OAuth,没有Omniauth,我也可以这样做吗


我真正的问题是,我不理解它们之间的区别,Omniauth在哪里结束,OAuth在哪里开始,我可以用Omniauth做什么,这在OAuth中是不可能的。

在这个答案中,我假设您使用的是Rails(或其他基于机架的框架),因为没有它,Omniauth就没有多大意义

从OAuth2开始。OAuth是一个系统,用于授权一个站点上的用户在另一个站点上使用其身份验证。OAuth本身描述了管理此操作的系统,但它没有指定站点执行此操作所使用的代码。(这意味着,例如,基于PHP的站点可以使用基于Ruby的站点作为提供者,而不需要知道提供者的幕后情况。)

这就是Omniauth的用武之地。Omniauth是一个在基于机架的站点中支持分散身份验证的软件包。OAuth2是它支持的处理此问题的协议之一,它包含了一个名为OAuth2的类,该类是OAuth2规范的Ruby实现。您可以将Omniauth视为OAuth2的包装器,它处理协议的细节,而不会给您带来太多麻烦

您可以在不使用Omniauth的情况下使用OAuth2 gem/类,并自己处理通过OAuth2进行身份验证的细节,但我不知道为什么


就Omniauth所能做的OAuth所不能做的事情而言,大部分是使用其他非OAuth服务进行身份验证(Omniauth允许使用社区构建的“策略”进行身份验证,例如堆栈交换)。

Fran,你写这个问题的方式让我觉得你在使用Rails。这是真的吗?是的,这是一个rails应用程序。迟回应总比不回应好:这不是真的正确。OAuth不是“用于在站点之间共享身份验证的协议”,它也没有“描述两个站点对用户进行身份验证所采取的一系列步骤”。它主要是关于授权,“资源所有者”允许第三方应用程序代表他们访问资源。该资源可以是一个帐户,提供有关资源所有者的一些信息,但应用程序可能并不真正了解他们。感谢您的澄清。我做了一些编辑,“协议”是一个合理的词吗?是的,我肯定会这么说。也使用它。这不是一个认证协议。注意,它构建在OAuth2上,以提供身份验证和与身份相关的功能。