2014-04-12 38 views
0

我有一個管理控制檯,用於通過使用我們公司的OAuth 2.0服務添加登錄來提供對現有服務的管理控制檯。我想在這裏使用Apigee,以便具有管理控制檯的Web應用程序不必實現登錄邏輯。Apigee:使用現有的OAuth 2.0 id提供商添加登錄

我的想法是使用AuthorizationCode流動,讓Apigee管理令牌和我看着https://github.com/apigee/api-platform-samples/tree/master/sample-proxies/oauth-login-app,但我真的看不到我們現有的OAuth服務如何適用。

是否有這樣的一個樣本?也許使用Google或Facebook的OAuth服務對用戶進行身份驗證?

+0

所以基本上你想要通過與現有的oauth 2.0服務集成來驗證管理控制檯的用戶?你如何集成取決於幾件事情:現有的oauth 2.0服務支持什麼grant_types?管理控制檯是服務器端還是客戶端?想要在現有的oauth 2.0服務中已經存在令牌時想要使用apigee來創建令牌的任何理由? –

+0

正確。管理控制檯託管在服務器端,我們在oauth服務器中使用授權代碼流。我不完全確定我理解你的最後一個問題 - 這個想法是在apigee中驗證用戶。我不需要admin-webapp中的用戶信息,我想要做的就是將訪問管理控制檯的權限限制在我們的員工中,而無需在admin-webapp中編寫任何其他代碼。對於它所管理的服務(我們的產品),還有一個用戶登錄,但爲此我們使用另一個oauth服務(Google登錄) - 與此分離。 – user331244

回答

1

首先,Apigee需要成爲管理控制檯的代理。這意味着所有到管理控制檯的流量都必須經過Apigee。否則,您將無法執行身份驗證。

其次,與外部oauth 2.0服務集成有幾個不同的選項。 Apigee能夠存儲外部訪問令牌並將其用作自己的API,或者Apigee可以生成令牌並將外部訪問令牌存儲爲自定義屬性。

在Apigee代理如何能像高層的想法:

ProxyEndpoint - 端點暴露在連接到管理控制檯客戶
TargetEndpoint(未在OAuth的登錄,應用程序示例所示) - 終點爲實際管理控制檯

在將請求發送到管理控制檯之前,在Apigee代理中執行的流將需要實現檢查身份驗證令牌的邏輯。如果有效,請將請求傳遞到TargetEndpoint(管理控制檯)。如果請求無效,請逐步調用邏輯來調用外部oauth 2.0服務器的認證碼流。這將需要以下內容:

  1. Apigee需要註冊外部oauth 2.0服務器。
  2. 需要在此代理中構建邏輯以支持基於重定向的授權代碼授權流程grant_type(獲取授權碼,接收授權碼,獲取令牌 - >全部,而基於重定向且對用戶透明)。
  3. 除#2外,Apigee還需要將外部令牌存儲爲自定義屬性並公開apigee令牌,或者稍後將外部令牌存儲以供驗證。 http://apigee.com/docs/api-services/content/authorize-requests-using-oauth-20(請參閱授權令牌管理)。在存儲令牌之後,您需要以最初的uri +令牌再次進行302重定向,以便請求可以作爲經過驗證的請求傳遞給管理控制檯。

#2並不完全直接,並且不會有示例代理顯示此實現。如果oauth 2.0服務支持密碼授權,它可能會簡化實施,但允許憑證通過apigee,而不是直接通過授權服務器。