Red Hat Single Sign-On 在 Red Hat Summit 的主題演講示範!

2018 年 6 月 17 日,作者:Marek Posolda

Red Hat Summit 是年度最重要的活動之一。許多技術人員、Red Hat 員工和客戶都有很好的機會見面、學習新事物並參與許多有趣的簡報和培訓。今年峰會期間,有一些專題討論會完全關於 Keycloak 和 Red Hat SSO。您可以參考這篇部落格文章了解更多詳細資訊。

Red Hat Summit 最重要的部分之一是主題演講示範,它展示了主要重點和未來策略。通常,它們也包含 Red Hat 使用的最有趣技術的示範。

在週四早上的主題演講中,有這段示範展示了在 3 個雲端(Azure、Amazon、私有雲)中運作的混合雲!其中涉及許多技術和有趣的專案。其中,我們來列舉一下Red Hat JBoss Data Grid (JDG)OpenWhiskGluster FSRH-SSO(基於 Keycloak 專案的 Red Hat 產品)也有幸被使用。

Red Hat SSO 設定詳細資訊

示範的前端是一個簡單的手機遊戲。RH-SSO 在第一階段用於驗證使用者登入手機遊戲。每位與會者都有機會親自嘗試。總共有 1200 名遊戲玩家。

前端有一個負載平衡器,每位使用者都會自動轉發到 3 個雲端之一。行動應用程式使用RH-SSO Javascript 介面卡 (keycloak.js) 與 RH-SSO 通訊。

使用 Javascript 應用程式時,整個 OpenID Connect 登入流程都會在瀏覽器中進行,因此可以依賴黏性工作階段。因此,由於使用了 Javascript 介面卡,您可能會認為我們可以進行「簡單」設定,讓所有 3 個雲端的 RH-SSO 執行個體彼此獨立,並且每個執行個體都使用單獨的 RDBMS 和 infinispan 快取。請參閱下圖,了解此設定的外觀:

透過此設定,每個雲端僅知道在其上建立的使用者和工作階段。這在黏性工作階段中沒有問題,但如果 3 個雲端之一發生故障/移除,它將無法用於容錯移轉場景。它還有其他問題 - 例如管理員和使用者只能看到在特定雲端上建立的工作階段。也存在潛在的安全問題。例如,當管理員在一個雲端上停用使用者時,使用者在其他雲端上仍然會被啟用,因為對使用者的變更不會傳播到其他雲端。

因此,我們寧願展示更適當的設定,了解複寫。同樣是因為示範的一部分是展示實際的容錯移轉。3 個雲端之一(Amazon)被關閉,先前登入 Amazon 的使用者被重新導向到其餘 2 個雲端之一。重點是終端使用者無法識別任何變更。因此,先前登入 Amazon 的使用者仍然必須能夠在 Azure 或私有雲端中重新整理其權杖。這反過來意味著資料(包括使用者、使用者工作階段和快取)需要了解所有 3 個雲端。

在 Keycloak 3.X 中,我們增加了對跨資料中心(跨站點)設定的支援,並使用外部 JDG 伺服器在資料中心之間複寫資料(RH-SSO 7.2 中的技術預覽)。示範正好使用了此設定。每個站點都有 JDG 伺服器,並且所有 3 個站點都透過這些 JDG 伺服器相互通訊。這是標準的 JDG 跨資料中心設定。請參閱下圖,了解示範的外觀:

JDG 伺服器不僅用於 RH-SSO,也用於示範的其他部分。詳細資訊在 Sebastian Łaskawiec 的JDG 設定部落格中說明。JDG 伺服器使用 ASYNC 備份進行設定,這更有效,並且由於行動應用程式使用的是 keycloak.js 介面卡,因此對於示範的目的來說完全沒問題。請參閱RH-SSO 文件,了解更多詳細資訊。

Red Hat SSO 客製化

RH-SSO 使用標準的RH-SSO openshift 映像。對於跨資料中心設定,我們需要根據RHSSO 文件中所述進行設定變更。也進行了一些其他客製化。

JDG 使用者儲存

RH-SSO 跨資料中心設定目前需要複寫的 RDBMS 和複寫的 JDG 伺服器。在準備示範時,我們發現設定在 OpenShift 中跨所有 3 個雲端複寫的叢集 RDBMS 並不是一件非常簡單的事情。

幸運的是,RH-SSO 是一個高度可客製化的平台,其中,它提供了支援的使用者儲存 SPI,這允許客戶插入他們自己的 RH-SSO 使用者儲存。因此,我們建立了自訂的 JDG 使用者儲存,而不是設定複寫的 RDBMS。因此,範例領域的使用者會儲存在 JDG 內部,而不是 RDBMS 資料庫。

我們學到的教訓是,我們希望讓管理員的 Keycloak/RH-SSO 跨資料中心設定更簡單。因此,我們正在考慮完全消除對複寫 RDBMS 的需求,而是將所有領域和使用者中繼資料儲存在 JDG 中。因此,只有複寫的 JDG 將是跨資料中心設定的要求。

其他客製化

為了示範的目的,我們製作了自訂的登入佈景主題。我們還製作了僅限電子郵件驗證器,允許使用者僅透過提供電子郵件地址來註冊。這顯然不是很安全,但對於範例目的來說非常棒。主題演講使用者也可以使用Google 身分提供者Red Hat 開發人員 OpenID Connect 身分提供者登入,這對於那些已經在這些服務中擁有帳戶的使用者來說非常有用。

如果您想嘗試所有這些實際操作,您可以嘗試查看我們在 Github 上的示範專案並將其部署到您自己的 openshift 叢集中!如果您有 3 個雲端,那就更好了!您可以嘗試完整的設定,包括 JDG,來嘗試我們在主題演講示範期間使用的確切設定。