首先,Apigee需要成爲管理控制檯的代理。這意味着所有到管理控制檯的流量都必須經過Apigee。否則,您將無法執行身份驗證。
其次,與外部oauth 2.0服務集成有幾個不同的選項。 Apigee能夠存儲外部訪問令牌並將其用作自己的API,或者Apigee可以生成令牌並將外部訪問令牌存儲爲自定義屬性。
在Apigee代理如何能像高層的想法:
ProxyEndpoint
- 端點暴露在連接到管理控制檯客戶
TargetEndpoint
(未在OAuth的登錄,應用程序示例所示) - 終點爲實際管理控制檯
在將請求發送到管理控制檯之前,在Apigee代理中執行的流將需要實現檢查身份驗證令牌的邏輯。如果有效,請將請求傳遞到TargetEndpoint(管理控制檯)。如果請求無效,請逐步調用邏輯來調用外部oauth 2.0服務器的認證碼流。這將需要以下內容:
- Apigee需要註冊外部oauth 2.0服務器。
- 需要在此代理中構建邏輯以支持基於重定向的授權代碼授權流程grant_type(獲取授權碼,接收授權碼,獲取令牌 - >全部,而基於重定向且對用戶透明)。
- 除#2外,Apigee還需要將外部令牌存儲爲自定義屬性並公開apigee令牌,或者稍後將外部令牌存儲以供驗證。 http://apigee.com/docs/api-services/content/authorize-requests-using-oauth-20(請參閱授權令牌管理)。在存儲令牌之後,您需要以最初的uri +令牌再次進行302重定向,以便請求可以作爲經過驗證的請求傳遞給管理控制檯。
#2並不完全直接,並且不會有示例代理顯示此實現。如果oauth 2.0服務支持密碼授權,它可能會簡化實施,但允許憑證通過apigee,而不是直接通過授權服務器。
所以基本上你想要通過與現有的oauth 2.0服務集成來驗證管理控制檯的用戶?你如何集成取決於幾件事情:現有的oauth 2.0服務支持什麼grant_types?管理控制檯是服務器端還是客戶端?想要在現有的oauth 2.0服務中已經存在令牌時想要使用apigee來創建令牌的任何理由? –
正確。管理控制檯託管在服務器端,我們在oauth服務器中使用授權代碼流。我不完全確定我理解你的最後一個問題 - 這個想法是在apigee中驗證用戶。我不需要admin-webapp中的用戶信息,我想要做的就是將訪問管理控制檯的權限限制在我們的員工中,而無需在admin-webapp中編寫任何其他代碼。對於它所管理的服務(我們的產品),還有一個用戶登錄,但爲此我們使用另一個oauth服務(Google登錄) - 與此分離。 – user331244