2012-08-16 128 views
3

在我的应用程序上,用户可以登录到Facebook,然后应用程序拥有用户的访问令牌(称为'abc'),我想使用此令牌在我自己的服务器上创建用户。是否使用Facebook访问令牌安全地验证用户?

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

该系统可能会被愚弄吗?你能想出一种方法可以让别人登录吗?

回答

2

你应该检查所有Authentication文件和OAuth规范的,以查看可用

广义地说,不同的身份验证流程,您可以创建基于访问令牌服务器上的用户,并合理确定当你从Facebook获得一个访问令牌的用户ID与它是同一个人时。

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

1

我认为你使用的是Facebook的SDK,如果是这样的话,Facebook的SDK为你提供了安全保障,你不必担心一件事。假设你没有使用SDK访问API,那么有一些必须注意两点:

1)身份验证令牌频繁到期(Facebook已经不厌其烦地确保用户被保护)

2)制作只有身份验证令牌的请求是不够的有是一些其他需要的参数,特别是如果你正在做这个服务器端,所以不能伪造,因为增加了一个额外的层,fb调用服务器流认证

3)最重要的是,用户必须提供许多权限才能让应用程序访问某些数据。下面的链接提供了一个关于身份验证的好文章,您可以查看

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

这么长话短说它是安全的。

相关问题