2017-08-10 140 views
0

我們目前正在分析我們微服務的API網關,Kong是可能的候選人之一。我們發現Kong支持一些用於身份驗證的插件,但全部都基於存儲在Kong數據庫本身中的用戶。我們需要將此責任委派給我們的自定義auth HTTP服務,並且不希望將這些用戶添加到API網關數據庫中。香港API網關自定義身份驗證服務

回答

0

查看Kong的OpenID Connect插件getkong.org/plugins/openid-connect-rp - 它連接到外部身份驗證和身份驗證系統。

2

可以用一些代碼來做到這一點,而不是使用OpenID連接插件;實際上,您需要實現授權服務器,該授權服務器通過管理員(8001)端口與Kong進行對話,並授權使用具有外部給定用戶ID的API。

總之,這是不言而喻的(這裏的授權碼補助金)如下:相反

  • 直接問香港的令牌,打認證服務器並請求獲得特定API令牌(根據需要選擇硬編碼或參數化),並且包含需要在呼叫中訪問的應用程序的客戶端ID(實際上您實現了/authorize端點)
  • 授權服務器現在需要使用任何IdP進行身份驗證您需要,以便您的授權服務器中有經過驗證的用戶
  • 現在通過Kong Admin API獲取API的供應代碼,並點擊Kong網關(端口8443)的/oauth2/authorize端點,包括配置密鑰;請注意,您可能還需要通過管理API爲應用客戶端ID查找客戶端密鑰,以使其工作
  • 包括客戶端ID,客戶端密鑰,已驗證的用戶ID(來自您的自定義IdP),並且可選範圍爲POST/oauth2/authorize;這些值將被添加到使用訪問令牌的API的後端調用中,該應用程序現在可以使用授權代碼聲明
  • Kong將爲您提供授權碼,您將通過302重定向傳遞迴應用程序(您將需要閱讀OAuth2規範)
  • 該應用程序使用其客戶端和祕密,以及授權碼,從Kong的端口8443,URL /oauth2/token獲取訪問令牌(和刷新令牌)。

這聽起來比最後更多地涉及到了。我爲wicked.haufe.io做了這個工作,它基於Kong和node.js,併爲Kong增加了一個開源開發者門戶。有很多的代碼中顯示什麼可以做任何的IdP集成以下兩個項目:

目前我們正在調查,看我們是否也可以添加一個默認授權服務器給邪惡的,但現在你必須滾動/分叉你自己的。

也許這有幫助,馬丁

+0

感謝您的答案。我一定會更深入地看待建議。 –

+0

如果我已經有一個微服務處理認證(用戶+密碼),授權(用戶是否可以訪問特定資源)和註冊(將用戶添加到綁定到此微服務的用戶數據庫)會怎麼樣?有沒有辦法將用戶服務與kong整合?看起來這種用戶交互級別更適合於特定應用。 – user1790300

+0

這聽起來像是你可以或許應該用OAuth2來解決,這是退步,通常將授權抽象爲範圍。如何詳細完成* your *服務很難從您在此處陳述的內容中分辨出來。理想情況下,您的API只需獲取Kong提供的授權和身份驗證,即可從事先收集的信息中獲取。這往往是可能的,但並非總是如此。 – donmartin