簡體   English   中英

使用Facebook OAuth保護REST API

[英]Securing a REST API with Facebook OAuth

我正在構建一個app / API,允許用戶使用Facebook,Twitter或Google登錄。 我想知道允許這些用戶使用同一帳戶登錄API的最佳做法是什么。

  1. 我所擁有的一些想法是將頭中的auth令牌/ cookie傳遞給每個請求的API,並使用它在后端進行身份驗證。
  2. 運行我自己的OAuth設置,並讓用戶通過后端進行一次身份驗證,以獲取我的OAuth令牌,然后使用這些令牌。

我正在做同樣的事情,我的解決方案是匹配從這些相應的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM