2011-12-11 78 views
4

有許多描述客戶的Facebook/LinkedIn/Twitter的API用法方面的OAuth使用資源。還行吧。但我對OAuth服務器實現感興趣。目標是讓移動設備(本地應用程序)可以訪問的Web應用程序,所以我需要在後端Java服務器上設置OAuth。所以我想知道LinkedIn/Facebook/Twitter在他們的服務器端如何實現OAuth,並在auth_token-s之間區分用戶並授予相應的訪問權限(某種數據庫映射 - auth_token =用戶標識?)。OAuth 1.0或2.0服務器實施?原生移動應用認證

或者,也許有更好的方式來驗證移動用戶(我要爲後端使用REST風格的服務)?

回答

5

Facebook,LinkedIn和Twitter已按照OAuth 1(Twitter LinkedIn)和draft for OAuth 2(Facebook,LinkedIn)的規範實施了OAuth。

我建議去爲OAuth的1或2的OAuth用戶代理流程。如果你的思想是在OAuth上設置的。你總是可以從simple basic authentication開始,專注於真正困難的部分,即API本身的設計。

如果你的心是設置OAuth的,檢查出的代碼庫,這個名單:http://oauth.net/code/。並且閱讀規範,如果您想實施OAuth提供程序,則必須瞭解和了解規範。否則,你將面臨一個痛苦的世界,尋找可以爲你解決一切「OAuthy」的開箱即用庫。

+0

你能請,也澄清,如果您熟悉OAuth規範 - 沒有規定如何生成令牌,以及如何映射令牌用戶身份(運行時的HashMap,數據庫等),或該部分缺失在規範中,它取決於提供者的實現,所以Twitter/Facebook/LinkedIn每個人都有自己的提供者實現?也許,您知道這些公司在OAuth體系結構/實施中提供的任何演示文稿/文檔? – akazlou

+0

令牌和祕密生成未指定,這的確是達到用下面的語句實現者:'敦促慎之又慎的一側,使用時間最長的祕密reasonable'。即使用嚴格的加密算法,使用真正的隨機和複雜的鹽。說到OAuth 1,請閱讀:https://dev.twitter.com/docs/auth/oauth。它描述了客戶的實施者需要做什麼,因此也是您作爲提供者需要堅持和支持的東西。我還沒有找到更多詳細的實施文章。在我看來,這歸結於對規格的理解。 –

+1

另一點是,對於OAuth 1的問題域,消費者(客戶端)和提供者(服務器)實際上做同樣的事情,它們使用相同的祕密簽署參數,因此用於簽署請求的客戶端庫可以很容易地用於簽名在服務器端請求驗證。不同的是,一旦完成,一部分發送響應,另一部分接收它們。對於OAuth 2,取決於您選擇的流量,存在更多差異。用戶代理流程似乎是最常用的。但請記住,OAuth 2仍然是規範草案。 –