使用Facebook访问令牌是一种安全的方式来验证用户?

时间:2012-08-16 16:50:38

标签: facebook facebook-graph-api

在我的应用程序上,用户可以登录Facebook,然后应用程序拥有用户的访问令牌(比如'abc'),我想使用此令牌在我自己的服务器上创建用户。

将此访问令牌发送到我的服务器(使用SSL)是否安全,然后在我的服务器上使用https://graph.facebook.com/me?access_token=abc获取用户的用户名和ID,并检查该令牌所属的应用程序是我的{{3 }}。如果是我的应用程序,则将用户存储在用户的数据库中和/或将其登录。

这个系统会被愚弄吗?你能想到某人可以像其他人一样登录的方式吗?

2 个答案:

答案 0 :(得分:2)

您应该查看所有Authentication文档和Oauth规范,以查看可用的不同身份验证流程

一般来说,您可以根据访问令牌在服务器上创建用户,并且可以合理地确定当您从Facebook获取与该用户相同的用户ID的访问令牌时。

如果您需要非常高的应用安全性,您可以采取措施确保用户的访问令牌不是通过恶意软件或Facebook用户被欺骗产生的,有一个示例显示Server Side Authentication文档中针对CSRF的保护,还有一个reauthentication流可以使用

答案 1 :(得分:1)

我假设您正在使用facebook sdk,如果是这样,facebook sdk会为您处理安全问题而您不必担心任何事情。假设您在没有sdk的情况下访问api然后那里有两点必须注意:

1)Auth令牌经常过期(Facebook已经花了很大力气确保用户受到保护)

2)仅使用auth令牌发出请求是不够的,还有一些其他需要的参数是无法伪造的,特别是如果您正在执行此服务器端,因为添加了额外的层,fb调用服务器流认证< / p>

3)除此之外,还有很多权限,用户必须提供这些权限才能让应用程序访问某些数据。下面的链接提供了一篇关于身份验证的精彩文章,您可以查看一下< / p>

https://developers.facebook.com/docs/authentication/

这么长的故事很简单,这是安全的。