2015-02-23 80 views
11

我有使用Android帳戶管理器進行驗證的問題。我們有一個後端和一個Android應用程序,用戶應該使用他的Facebook帳戶登錄我們的後端。目前我們展示了一個用於此目的的webview,它可以執行正常的oAuth 2,但是使用Android帳戶管理器更加安全並且對用戶來說更容易,所以我們希望切換。我的問題是,服務器如何驗證用戶是否真的假裝他是誰。由於我們不能相信應用程序,所以我們必須從服務器端與fb進行交談,以驗證用戶是否真的是他假裝的人。基於相當similar idea我做了下面的圖來問你,如果這是做了正確的方式,或者如果我錯過了什麼:使用Android帳戶管理器在我的服務器上驗證使用FB登錄的用戶

Steps before the user is authenticated at "My Server" 流程是這樣的:

  1. 用戶希望登錄他的Facebook帳戶
  2. Android的客戶經理顯示,他挑選的Facebook帳戶
  3. 用戶授予訪問「我的應用」被允許訪問他的FB數據
  4. Android的命中率'mount經理從Facebook服務器
  5. 「我的應用」現在有身份驗證令牌,可以訪問用戶的FB數據得到一個身份驗證令牌
  6. 「我的應用」通過了僑民轉讓技術方案,以「我的服務器」
  7. 「我的服務器」現在通過從fb服務器獲取用戶數據來檢查令牌是否有效如果令牌有效,「我的服務器」將使用「我的應用」爲當前會話返回一個正常的臨時有效cookie。用戶現在用他的fb賬戶登錄到我的服務器。

那麼這是正確的方法嗎?第6步是將令牌傳遞給「我的服務器」還是有更好的方法?順便說一下,Facebook只是一個例子,我們使用不同的auth提供商,如FB,谷歌和Twitter,但流量應該是相同的每一個。

+0

「我的服務器」現在通過從fb服務器獲取用戶數據來檢查令牌是否有效。這怎麼可能是正確的? – 2017-03-15 15:47:07

+0

@ H.A.H。如果Facebook服務器返回有效用戶並且不拒絕該令牌,則該令牌必須有效 – 2017-03-16 10:46:06

回答

9

我不知道這是否正確的方式。但我想分享一下我們在解決這個問題時如何解決這個問題,這與您的解決方案非常相似。我們使用GoogleFacebook授權提供商。

我們的android應用程序發送令牌給服務器,然後服務器根據提供程序驗證令牌,如果它被驗證,那麼用戶如果不是我們會顯示相應的消息,那麼就很好。我們還用於每次當用戶在服務器端打開應用程序時,如果令牌仍然有效,用戶可以使用應用程序,如果不是,我們只需將用戶返回登錄屏幕,就可以檢查令牌的驗證,因此用戶可以再次驗證自己,因爲令牌得到一段時間後過期。

相關問題