我已经阅读了很多有关Omniauth和OAuth2的信息,以及Omniauth如何使用OAuth的知识,但是我真的不了解每个OAuth的目标是什么。
例如,我知道使用Omniauth可以通过以下方式返回发送的参数
@auth ['omniauth.params']
但是,如果我使用的是不带Omniauth的OAuth,是否可以这样做?
我的真正问题是,我不了解它们之间的区别,Omniauth在何处结束和OAuth开始,以及我如何使用OmniAuth来完成OAuth无法做到的事情。
在这个答案中,我假设您使用的是Rails(或其他基于Rack的框架),因为没有这些,Omniauth就没有多大意义。
从OAuth2开始。OAuth是一种系统,用于使用一个站点上的身份验证来授权一个站点上的用户。OAuth本身描述了对此进行管理的系统,但未指定网站用来执行此操作的代码。(这意味着,例如,基于PHP的站点可以使用基于Ruby的站点作为提供程序,而无需知道该提供程序的幕后发生的事情。)
这就是Omniauth的用处。Omniauth是一个软件包,用于支持基于Rack的站点中的分散式身份验证。OAuth2是它支持处理此问题的协议之一,并且它包含一个名为OAuth2的类,该类是OAuth2规范的Ruby实现。您可以将Omniauth视为OAuth2的包装器,它可以处理协议的详细信息,而不会给您带来太多麻烦。
您可以在不使用Omniauth的情况下使用OAuth2 gem / class,并且自己处理通过OAuth2进行身份验证的细节,但是我不确定为什么。
至于您可以使用OAuth无法完成的Omniauth所做的事情,大多数是通过其他非OAuth服务进行身份验证(Omniauth允许使用社区构建的“策略”来进行身份验证,例如对Stack Exchange进行身份验证)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句