2012-08-16 233 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/

這麼長話短說它是安全的。

相關問題