iT邦幫忙

2021 iThome 鐵人賽

DAY 24
0
Software Development

用Keycloak學習身份驗證與授權系列 第 24

Day23 - 【概念篇】Keycloak使用基本概念 - 第一部分: Realm

本系列文之後也會置於個人網站


Realm,中文或許會翻作「域」,但基本很像是程式開發上,語言層面提供的包(package)或是命名空間(namespace)。或者可能可以更貼切的說是工作空間(workspace)。

你可以想象就像是一個企業、部門或是其他組織。有著相同的一些規範,同事們在同樣地工作空間生活、工作。但不同的企業、部門或是其他組織,可能會有類似的規範,但兩者不互相影響。

會特別有這個概念,是因爲Keycloak是可以建立多個Realm的。也就是,在同一間公司內,不同部門都可以有自己的Realm,制定部門自己的管理規範。或是特別爲外部客戶建立一個Realm,並制定特殊規範。

不同的Realm內,有著自己的帳號系統、密碼規範政策等。利用這個特性,之後也會用來更清楚的理解Open-Id。

你也可以同樣簡單視爲一個帳號資料庫、身份驗證伺服器。特別的是在會話成立期間,可以不需要再進行一次驗證,而這部分,會在提到Client時在多做說明。

如何建立一個Realm

要建立一個Realm是非常簡單。在之前也建立過「quick-start」這個Realm。也幾乎就只需要給個名字而已。

本系列會使用到的相關設定

接著會提到一些在這個系列上會使用的設定。雖然絕大部分都會維持預設值,但多少都是與身份驗證與授權相關的。

Realm Token相關設定

需要留意的幾個會是Session IdleSession MaxLifespan相關的設定。這些會關乎到存取權限有效期限有多長、一次登入會話可以保留多長時間。換句話說,多久後需要更新存取權杖、多久後需要重新登入。

舉個例子:
1. 將SSO Session Idle 改爲1分鐘。
2. 然後使用「快速開始」登入以後,就將快速開始的頁面關掉。
3. 接著等待個一分鐘。(建議再多等一下)
4. 之後重新打開「快速開始」的應用頁面,再做一次登入動作。會發現需要在輸入一次帳號密碼。

再舉個例子:

1. 將SSO Session Max 改爲5分鐘。
2. 然後使用「快速開始」登入。
3. 接著等待個五分鐘後。(建議再多等一下)
4. 再一次點擊登入按鈕,會發現同樣需要在輸入一次帳號密碼。

你或許會注意到相關的設定還有一組與Remember Me有關的。但是我們登入畫面上並沒有Remember Me的選項可以勾選,關於這點可以在Login頁籤開啓。在預設值的情況下,就意味者允許用戶的會話長期保留,而無需再次登入。像這種政策決策,可能會受到部門政策、應用安全性考量而有些不同。有些的記住我可能最多也就保留30天而已。

Security Defenses相關設定

然後是關於安全性的設定。這部分會設置一些response時的Headers屬性。

這部分在本系列會有一些調整,但如果不熟悉相關issue,建議同樣維持預設值。此外,Client Registration和UAM實際也與OAuth有關,但大概是沒機會多提到了。總之一些還頗爲重要的設定都是在Realm下。

關於 Master Realm

Keycloak可以建立多個Realm,但其中一個預設的Realm有一點那麼特別--Master。這可以說是在管理Keycloak本身,而我們用以建立Realm的帳號同樣在這個Realm底下。

你可以注意到,當我們要使用Administration Console時,登入的就是這一個Realm。


上一篇
Day22 - 【概念篇】Keycloak使用基本概念 - 前導
下一篇
Day24 - 【概念篇】Keycloak使用基本概念 - 第一部分: Client
系列文
用Keycloak學習身份驗證與授權40

尚未有邦友留言

立即登入留言