[英]Securing a REST API with Facebook OAuth
我正在构建一个app / API,允许用户使用Facebook,Twitter或Google登录。 我想知道允许这些用户使用同一帐户登录API的最佳做法是什么。
我正在做同样的事情,我的解决方案是匹配从这些相应的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.