繁体   English   中英

使用Facebook OAuth保护REST API

[英]Securing a REST API with Facebook OAuth

我正在构建一个app / API,允许用户使用Facebook,Twitter或Google登录。 我想知道允许这些用户使用同一帐户登录API的最佳做法是什么。

  1. 我所拥有的一些想法是将头中的auth令牌/ cookie传递给每个请求的API,并使用它在后端进行身份验证。
  2. 运行我自己的OAuth设置,并让用户通过后端进行一次身份验证,以获取我的OAuth令牌,然后使用这些令牌。

我正在做同样的事情,我的解决方案是匹配从这些相应的API获得的电子邮件地址。

对于Facebook,您需要最终用户的特殊许可才能获得在那里注册的电子邮件地址。 您可以通过将&scope=email添加到第一个oauth请求来执行此操作。

缺点是您需要获得最终用户的此许可,他们可能会拒绝。 另一个缺点是用户需要为Google,Facebook和Twitter使用相同的电子邮件地址。

优点是用户记录会自动合并,因此用户可以在第一次通过Google登录时直接访问所有数据,第二次通过Facebook登录。

另一种方法是手动合并他们的数据,方法是在他们已经通过Facebook登录时登录Google。 然后,您可以得出结论,即使他们使用不同的电子邮件地址,他们也是同一个用户。 但这是一种更乏味的方法,因为您仍然需要合并来自两个帐户的应用程序的用户数据。

您的第一个解决方案就是我的方式。 由于我的所有其他服务都是无状态服务,因此访问令牌位于标头中,并在每个请求中由Spring安全验证过滤器进行解析。 我使用带有spring-security-oauth插件的grails服务器。 我们还运行一个网站,允许使用会话cookie进行基于浏览器的访问。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM