OAuth2和Omniauth之间的区别

时间:2013-12-20 12:28:38

标签: ruby-on-rails oauth omniauth

我已经阅读了很多关于Omniauth和OAuth2的内容,以及Omniauth如何使用OAuth,但我并不了解每个人的目标是什么。

例如,我知道有了Omniauth,我可以通过

返回params
  

@auth [ 'omniauth.params']

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

我真正的问题是,我不明白它们之间的区别,Omniauth的结束和OAuth的开始,以及我能用Omuthuth做什么,这是OAuth无法实现的。

1 个答案:

答案 0 :(得分:22)

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

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

这是Omniauth的用武之地.Omniauth是一个支持基于机架的网站中分散式身份验证的软件包。 OAuth2是它支持处理此协议的协议的一个,它包含一个名为OAuth2的类,它是OAuth2规范的Ruby实现。您可以将Omniauth视为OAuth2的包装器,它可以处理协议的详细信息,而不会过多地使用它们。

可以使用OAuth2 gem / class而不使用Omniauth,并自行处理OAuth2身份验证的细节,但我不确定原因。

对于使用OAuth无法实现的Omniauth,大部分都是使用其他非OAuth服务进行身份验证(Omniauth允许使用社区构建的“策略”对例如Stack Exchange进行身份验证)