Users
是一種可以登錄系統的實體,可以擁有一些屬性,如email、username、address、phone number等, 可以加入組,成為組成員 可以分配角色
Authentication
識別和驗證用戶
Authorization
為用戶授權
Credentials
Keycloak用來識別和驗證用戶的一些數據,如密碼、一次性密碼、數字簽名、指紋。
Roles
- 角色,用戶的一個分類,如管理員、普通用戶、管理者、普通雇員等
- 應用程序一般會將權限分配給指定角色,而不是直接分配給用戶。
- 角色分為Realm級別角色和client級別角色。
- 用戶可以同時擁有Realm角色和不同client的client級別的角色。
User role mapping
一個用戶可以與0個或多個角色關聯,這些關聯關系可以被包含進token或assertions(斷言)中,applications可以根據這些映射關系來進行訪問控制。
Composite roles 復合角色
一個復合角色可以關聯多個普通角色,如復合角色superuser可以關聯sales-admin、order-entry-admin角色,如果用戶擁有superuser角色,則相當於同時擁有sales-admin和order-entry-admin角色。
Groups
- 組是為了更方便的管理用戶
- 可以為組定義屬性
- 可以為組分配角色
- 組成員自動繼承組的屬性和角色。
Realm 領域
- 一個realm管理一系列user、Credentials、roles、groups。
- 一個user隸屬於一個realm
- 一個user也只能log in 一個realm
- Realm彼此之間是隔離的
- 每個realm只能管理和認證自己控制的user
Clients
Clients可以請求keycloak去認證一個user
大多數情況下,clients是一些應用和服務,這些application和service想要通過keycloak加固自己,並提供單點登錄解決方案。
Clients還可以僅僅請求認證信息或者訪問token,這樣他們可以安全的調用其他被keycloak保護的服務。
Client apapters
Client適配器 是一種插件,
這種插件是用來安裝在你的應用環境上的, 安裝后,可以與keycloak進行通信,並被keycloak保護。 Keycloak針對不同的應用環境提供了不同的適配器,可以下載。 有些應用環境keycloak沒有提供apapter,可以使用第三方開發的adapter。
realm
領域的名稱, 這是必需的。
resource
應用程序的client-id,每個應用程序都有一個用於標識該應用程序的client-id。 這是必需的。
realm-public-key
領域的公鑰,PEM格式。 您可以從管理控制台中獲取。 這是可選的,建議您不要進行設置。 如果未設置,則適配器將從Keycloak下載此文件,並且始終會在需要時重新下載它(例如Keycloak旋轉其密鑰)。 但是,如果設置了realm-public-key,那么適配器將永遠不會從Keycloak下載新密鑰,因此,當Keycloak旋轉其密鑰時,適配器會損壞。
auth-server-url
Keycloak服務器的基本URL。 所有其他Keycloak頁面和REST服務端點都從此派生。 通常采用https:// host:port / auth的形式。 這是必需的。
ssl-required
確保與Keycloak服務器之間的所有通信均通過HTTPS。 在生產中,這應該設置為全部。 這是可選的。 默認值為外部,這意味着外部請求默認情況下需要HTTPS。 有效值為“全部”,“外部”和“無”。
confidential-port
Keycloak服務器用於通過SSL / TLS進行安全連接的機密端口。 這是可選的。 默認值為8443。
use-resource-role-mappings
如果設置為true,則適配器將在令牌內部查找用戶的應用程序級角色映射。 如果為false,它將查看用戶角色映射的領域級別。 這是可選的。 默認值為false。
public-client
如果設置為true,則適配器不會將客戶端的憑據發送到Keycloak。 這是可選的。 默認值為false。
bearer-only
對於服務,應將其設置為true。 如果啟用,適配器將不會嘗試對用戶進行身份驗證,而僅驗證承載令牌。 這是可選的。 默認值為false。
autodetect-bearer-only
如果您的應用程序同時提供Web應用程序和Web服務(例如SOAP或REST),則應將其設置為true。 它允許您將Web應用程序的未經身份驗證的用戶重定向到Keycloak登錄頁面,但是將HTTP 401狀態代碼發送到未經身份驗證的SOAP或REST客戶端,因為他們不了解重定向至登錄頁面的方式。 Keycloak根據典型的標頭(例如X-Requested-With,SOAPAction或Accept)自動檢測SOAP或REST客戶端。 默認值為false。
enable-basic-auth
這告訴適配器也支持基本身份驗證。 如果啟用此選項,則還必須提供密碼。 這是可選的。 默認值為false。
expose-token
如果為true,則經過身份驗證的瀏覽器客戶端(通過JavaScript HTTP調用)可以通過URL root / k_query_bearer_token獲取簽名的訪問令牌。 這是可選的。 默認值為false。
credentials
指定應用程序的憑據。 這是一種對象表示法,其中密鑰是憑證類型,而值是憑證類型的值。 當前支持密碼和jwt。 只有具有“機密”訪問類型的客戶端才需要執行此操作。
connection-pool-size
此配置選項定義應與Keycloak服務器建立多少連接。 這是可選的。 預設值為20。