2013-05-10 62 views
7

我有點迷失了信息的溢出,我需要一些關於我可以支持的最佳方式的指導,只向可信的客戶端提供API訪問。集中API提供程序 - oAuth或不?

當前環境:

我們目前有通過Apache四郎處理用戶身份驗證/授權中央服務器。

我們擁有與中央服務器進行內部通信以驗證和管理令牌的內部API。 (因此啓用SSO)。

我們的客戶端應用程序和API之間的通信通過SSL進行保護。
使用基於令牌的身份驗證。

目標:

我們的目標是讓第三方應用程序和API與我們的中央認證服務器通信。但我們主要擔心的是網絡釣魚,因爲我們只希望「有效」的各方與我們進行溝通,並且最好不允許在第三方身上暴露身份驗證信息。

問題:

1什麼是實現這種架構的最佳方法是什麼?我們應該繼續使用OAuth嗎?如果是的話,是否有一種很好的方式將其與Shiro整合?

2- OAuth會在移動應用程序上做好它的工作嗎? (例如限制對REST API的訪問,除非應用程序是可信的)

3-是否有可用於Java的OAuth提供程序庫,或者OAuth只是我必須實現的「標準」? (例如,實施RESTful API)

4- SSO是否輕鬆支持OAuth?

對不清楚的問題。我只需要一般的指導和建議。

+0

2)我的問題是 - 爲什麼OAuth不能在移動設備上工作? :)我沒有看到任何理由,爲什麼它不應該在那裏工作.. – Dworza 2013-05-10 13:40:33

+0

Shibboleth是一個選項?它看起來也與移動應用程序集成,並且具有比oAuth更一致的API。 [看到這個問題關於它](http://stackoverflow.com/questions/1935011/integrating-iphone-application-with-shibboleth) – David 2013-05-10 13:45:48

+0

這是一個要求,您的用戶能夠授予/拒絕訪問他們的數據這些第三方應用程序? – Perception 2013-05-10 13:48:05

回答

2

這裏是我的答案依次

  1. 的OAuth 2.0是你的最佳選擇。我會說你應該去OAuth。
  2. 肯定是的。
  3. 有圖書館。 Apache OltuGoogle client library.
  4. 構建在OAuth之上的OpenID Connect規範可用於實現SSO。
+0

感謝divyanshm的編輯 – SureshAtt 2013-05-14 11:22:31

+0

Google客戶端庫的文檔指定「此庫是一個易於使用且高效的Java客戶端庫,可使用JSON和OAuth 2.0訪問Google API」。 我迷路了,我認爲這將是一個實施我自己的OAuth提供者的圖書館? – SiN 2013-05-15 11:30:47

+0

你嘗試過Oltu嗎? – SureshAtt 2013-05-15 12:40:55

2
  1. 移動應用程序可以很好地與OAuth配合使用。
  2. 可以使用OAuth啓用SSO。

如何建立的OAuth服務器/提供一些信息 - How would an efficient OAuth2.0 server/provider work?

正如你所說,你需要詢問用戶授權的應用程序(接受/拒絕權限的應用程序請求) - OAuth 2.0的完美用例。

如果您需要更多關於OAuth如何工作的信息,請隨時關注。

PS - 不知道與Shiro集成。