同Keycloak對接實例(SAML2.0)
簡介
案例簡介
透過配置 Keycloak 的相關實例,實現Jodoo的單點登入業務。
使用場景
當企業同時擁有多套管理系統和Jodoo平台,透過單點登入的方式,可以實現登入相關管理系統後,免登入進入Jodoo中,便於多個系統平台之間的切換,提高企業管理效率。
設定步驟
在Keycloak中建立相關實例
1. 登入到Keycloak控制檯
打開Keycloak,點擊左側「Administration Console」,輸入帳號密碼後(無帳號的需要先註冊),登入到 Keycloak 控制檯中。
2. 新增realm實例
a. 在 Keycloak 控制檯中,點擊 Master 右側的下拉箭頭,在彈出的面板中點擊「Add realm」,並修改 realm 的名字為 Test,修改完成後點擊「Create」。如下所示:
b. realm 實例建立完成後,在「 realm 實例 > Keys 」處,選擇 Type 類型為「RSA」的算法,點擊該算法最右側的「Certificate」,在彈出的面板中,複製並儲存對應的祕鑰。
附註:
請務必複製並儲存祕鑰,便於後面步驟的配置與使用。
3. 新增client實例
a. 切換左側導覽列至「Clients」,點擊頁面右側的「Create」按鈕,建立新的 Client 實例:
- 在「Client ID」處 ,設定 ID 名稱,如設定其為 SSO;
- 在「Clients Protocol」處,選擇類型為「saml」。
全部設定完成後點擊「Save」按鈕進行儲存。
b. 在「SSO > Settings」處,確認打開「Enabled」、「Include AuthnStatement」、「Sign Docunments」這 3 部分的開關。
c. 同時,對其他配置項進行如下所示操作:
- Signature Algorithm:下拉單選內選擇「RSA_SHA256」;
- SAML Signature Key Name:下拉單選內選擇「KEY_ID」;
- Canonicalization Method:下拉單選內選擇「EXCLUSIVE」;
- Name ID Format:下拉單選內選擇「username」;
- IDP Initiated SSO URL Name:根據企業需求,設定名稱,如設定其名稱為 jdy。
其他配置項保持預設即可。
d. 以上配置項確認設定完成後,複製並儲存 SSO URL 地址,複製完成後點擊「Save」進行儲存。如下所示:
附註:
請務必複製並儲存 URL 地址,便於後面步驟的配置與使用。
4. 新增mapper配置
a. 在「SSO > Mappers」處,點擊右側「Create」按鈕,新增 mapper 配置。
b. 對於新增的 mapper ,進行如下所示的配置:
- Name:設定其名稱為「username」;
- Mapper Type:下拉單選內選擇「User Property」;
- Property:設定其為「username」;
- SAML Attribute Name:設定其為「username」;
- SAML Attribute NameFormat:下拉單選內選擇為「Basic」。
設定完成後,點擊「Save」按鈕,儲存以上設定。
附註:
該步驟中,各項配置須與圖示保持一致,不可隨意更改。
5. 新增使用者
a. 切換左側導覽列至「Users」處,點擊右側「Add user」按鈕,並在新增使用者面板上,設定 Username。設定完成後點擊「Save」進行儲存。
附註:
1. 確保新增使用者的 username,在Jodoo系統中存在相同 username 的成員。
2. Keycloak 中僅能辨識小寫字母,其他如大寫字母、符號等無法辨識;故確保使用者的 username 是由小寫字母組成的。
b. 在「新增的使用者名 > Credentials」處,設定使用者密碼,如下所示:
在Jodoo中配置單一登入
1. 開啟單一登入
a. 新開一個瀏覽器頁面,登入 Jodoo帳號,進入「企業管理 >企業設定」頁面中。
b. 在「企業安全 > 單一登入」處,打開單一登入的開關,並點擊「配置」按鈕。
2. 配置單一登入
單一登入配置項如下所示,部分配置資訊需複製 Keycloak 中 Client 實例的配置資訊。
- 單一登入配置方式:SAML 2.0
- SAML 2.0 Endpoint(HTTP):複製 Keycloak 中「Clients > SSO > Settings > IDP Initiated SSO URL Name 」處的內容,即本文【新增client實例】中的 SSO URL 地址。
- IdP公鑰:複製 Keycloak 中「 Realm Settings > Keys > Certificate 」處的內容,即本文【新增realm實例】中要求複製的祕鑰內容。
- SAML 加密算法:下拉單選中選擇「SHA-256 」。
- Issuer URL:複製 Keycloak 中「Clients > SSO > Settings > IDP Initiated SSO URL Name 」處的內容,即本文【新增client實例】中的 SSO URL 地址,並去掉 test 之後的地址後綴。
- SLO Endpoint (HTTP):保持預設即可。
3. 生成單一登入資訊
完成單一登入配置後,會生成如下單一登入相關資訊,複製並儲存「認證返回地址」。
附註:
需要根據生成的資訊去完成 Keycloak 中的相關配置,故可以暫時不關閉此頁面。
在Keycloak中回調URL
返回到「Keycloak > Clients > SSO > Settings 」配置頁面,按照如下所示進行配置,配置內容需要複製Jodoo中單一登入資訊。
- Valid Redirect URls:複製Jodoo中的認證返回地址;
- Master SAML Processing URL:複製Jodoo中的認證返回地址。
配置完成後點擊「Save」進行儲存。