2011-12-11 101 views
1

我需要提供程序中的安全Restfull服務。我希望用戶必須擁有使用REST服務的授權,並且如果不是註冊開發人員,我可以生成使用stadistic或根本不允許調用REST服務。如何保護REST風格的Web服務(PROVIDER)

我一直在考慮用戶在URL中發送電子郵件和密碼(http://autor.derf.com/api/search/[email protected] & passwd = dasffsdf;)但不是很安全。

另外我已經閱讀了關於oauth 2.0的文檔,但是對Java來說文檔是非常糟糕的。

是否有任何其他方式獲得授權的RESTful API?

我想在iPhone,Android,Windows Phone的一個問題的REST API接入和網絡

在此先感謝;)

回答

1

如果你打算寫的所有的服務自己(在iPhone,Android等)的客戶那麼只要提供者通過安全傳輸層(例如SSL/HTTPS)進行通信,發送電子郵件和密碼就是一個不錯的選擇。

如果您覺得您希望公開您的API,那麼您以後可以隨時添加對OAuth 1或2的支持。 (OAUth的整個想法是保護用戶的密碼,並且更好地控制客戶端可以使用哪些API以及多長時間)。

但是,你的情況我至少會考慮使用基本身份驗證,其中一個典型的HTTP請求,看起來有點像這樣:

GET /path/to/api HTTP/1.1 
Host: www.example.com 
Authorization: Basic aHR0cHdhdGNoOmY= 

哈希後「基本」簡直是base64編碼"username:password",或你的情況"email:password"。如果有人截取它,只需簡單地解碼即可獲得純文本用戶憑證。所以HTTPS是必須的。

» More information on basic authentication at wikipedia

+0

非常感謝,對於公共API,您是否知道oauth 2.0提供程序的Java的任何實現? – Rom

+0

那是這個問題的重複然後:http://stackoverflow.com/questions/2150801/implementing-oauth-provider-in-java –