2010-01-25 128 views
2

我有一個谷歌應用程序引擎項目,我想讓我的REST API可供第三方使用。像Twitter API一樣。Google App Engine(python)授權網絡服務/第三方客戶

Twitter要求發送用戶名和密碼,以便他們可以被授權 - 我可以使用Google用戶帳戶嗎?

我已經在這個網站,這不是因爲他們的憑據被輸入到第三方應用一個首選方法某處讀取/傳遞等

我不想過度複雜化,並將其重定向到谷歌自己的登錄/驗證碼等等。我已經看到這個實現 - 也與桌面/手機/小部件這可能不工作。

是第三方應用程序調用我的服務的解決方案 - 應用程序在我的網站上調用一個頁面(要求登錄 - 我只是添加登錄權限),然後用戶登錄,然後我的應用程序創建一個長令牌然後傳回第三方應用程序,然後將其存儲在自己的存儲庫中,並將其作爲post/put/delete請求中的Token arg傳遞。 然後,我的REST服務會檢查令牌和查找(令牌|用戶密鑰)對,並允許/拒絕方法調用。

我也可以問應用程序的域名?並存儲這一點。我想我可以讀取REST服務請求的URL並檢查它們是否匹配等?

這是一個合理的解決方案,還是我住在90年代?

回答

1

OAuth是在考慮到這種情況下創建的。這是您剛剛描述的那種授權令牌方案的規範,現在它是reasonably widespread

有關餘額,請參閱this recent StackOverflow thread

+0

嗯是的,我已經考慮過你所引用的線索中的反饋並不積極 - 每次客戶端連接時都必須訪問oAuth - 這對於第三方應用來說有點尷尬。 如果我正確地請求REST中非常直接的用戶名和密碼,Twitter會使用一個簡單的系統。再加上任何第三方應用程序只需要在請求get/post中包裝這個 - 再次簡單的東西。 我在這裏的假設是正確的? – spidee 2010-01-25 17:38:58

+1

Twitter也使用OAuth。 不確定您的意思是「每次客戶端連接時都必須訪問」;所做的每個API請求都需要有一個OAuth簽名,但用於簽名的令牌可能相當長久並且存在於各個會話中。 OAuth通過「發送密碼」方案提供的是針對被盜取令牌和請求篡改的一些安全措施。如果你不擔心這一點,那麼OAuth就不那麼有趣了。 – keturn 2010-01-25 23:25:45

+0

我想也許我應該重新考慮使用在Google帳戶模塊中構建的應用引擎。我也將重新審視oAuth作爲保護我的API端點的目的。 – spidee 2010-01-26 15:48:13