我已经阅读了很多有关Omniauth和OAuth2的信息,以及Omniauth如何使用OAuth,但是我不太明白每个人的目标是什么.
例如,我知道,使用Omniauth,我可以回复发送参数
@auth[‘omniauth.params’]
但如果我使用OAuth,没有Omniauth,我可以做同样的吗?
我真正的问题是,我不明白他们之间的区别,Omniauth结束和OAuth开始,我可以用Omniauth做什么,这是不可能的OAuth.
解决方法
在这个答案中,我假设你正在使用Rails(或者其他一些基于框架的框架),因为没有这个Omniauth没有什么意义.
从OAuth2开始. OAuth是一个系统,用于在一个站点上使用其他站点上的身份验证来授权用户. OAuth本身描述了管理它的系统,但它并没有指定站点用来执行的代码. (这意味着,例如,一个基于PHP的网站可以使用一个基于Ruby的网站作为提供者,而不需要知道提供者背后的情况.)
这是Omniauth进入的地方.Omniauth是支持基于Rack的站点的分散身份验证的一个包. OAuth2是它支持的协议之一,它包含一个名为OAuth2的类,它是OAuth2规范的Ruby实现.您可以将Omniauth视为OAuth2上的一个包装器,它处理协议的细节,而不会太麻烦你.
您可以使用OAuth2 gem / class而不使用Omniauth,并处理您自己的OAuth2认证的具体细节,但我不知道为什么.
就Outhiauth而言,如果使用OAuth无法做到这一点,大部分内容都与其他非OAuth服务进行身份验证(Omniauth允许使用社区制定的“策略”进行身份验证,例如Stack Exchange).