Keycloak 26.0.0
客戶端程式庫更新
客戶端程式庫的專屬發行週期
從此版本開始,某些 Keycloak 客戶端程式庫的發行週期將獨立於 Keycloak 伺服器發行週期。26.0.0 版本可能是最後一個與 Keycloak 伺服器一起發行客戶端程式庫的版本。但從現在開始,客戶端程式庫可能會在與 Keycloak 伺服器不同的時間發行。
客戶端程式庫是這些成品
-
Java 管理用戶端 - Maven 成品
org.keycloak:keycloak-admin-client
-
Java 授權客戶端 - Maven 成品
org.keycloak:keycloak-authz-client
-
Java 策略執行器 - Maven 成品
org.keycloak:keycloak-policy-enforcer
未來可能會包含更多程式庫。
客戶端程式庫支援 Java 8,因此可以將它們與部署在較舊應用程式伺服器上的用戶端應用程式一起使用。
預設會持續保存使用者會話
Keycloak 25 引入了 persistent-user-sessions
功能。啟用此功能後,所有使用者會話都會持續保存在資料庫中,而不是先前的行為,即只會持續保存離線會話。在 Keycloak 26 中,此功能預設為啟用。這表示所有使用者會話預設都會持續保存在資料庫中。
可以透過停用此功能來將此行為還原為先前的狀態。如需更多詳細資訊,請參閱設定分散式快取指南中的 Volatile user sessions
章節。
如需有關如何升級的資訊,請參閱升級指南。
新的預設登入主題
現在有新版本 (v2
) 的 keycloak
登入主題,它提供了改進的外觀和風格,包括根據使用者喜好自動切換到深色主題的支援。
先前的版本 (v1
) 現在已棄用,並將在未來的版本中移除。
對於所有新的領域,keycloak.v2
將是預設的登入主題。此外,任何從未明確設定登入主題的現有領域都將切換到 keycloak.v2
。
高可用性多站台部署
Keycloak 26 對建議的 HA 多站台架構進行了重大改進,最值得注意的是
-
Keycloak 部署現在能夠在兩個站台中同時處理使用者請求。
-
現在需要主動監控站台之間的連線,以便在發生故障時更新站台之間的複寫。
-
負載平衡器藍圖已更新為使用 AWS Global Accelerator,因為這可以避免用戶端 DNS 快取造成的長時間容錯移轉時間。
-
持久性使用者會話現在是架構的要求。因此,使用者會話將保留在 Keycloak 或 Infinispan 升級中。
如需有關如何遷移的資訊,請參閱升級指南。
管理員引導和復原
過去,當所有管理員使用者都被鎖定時,重新獲得對 Keycloak 執行個體的存取權是一個具有挑戰性和複雜性的過程。Keycloak 意識到這些挑戰,並旨在顯著增強使用者體驗,現在提供了幾種簡單的方法來引導臨時管理員帳戶並恢復遺失的管理員存取權。
現在可以使用特定的選項來執行 start
或 start-dev
命令,以建立臨時的管理員帳戶。此外,還引入了一個新的專用命令,允許使用者輕鬆恢復管理員權限。
有關此主題的詳細說明和更多資訊,請參閱 管理員引導和恢復 指南。
OpenTelemetry 追蹤預覽
Keycloak 已公開底層的 Quarkus 對 OpenTelemetry 追蹤的支援,可取得應用程式追蹤以提高可觀測性。這有助於找出效能瓶頸、判斷應用程式失敗的原因、追蹤分散式系統中的請求等等。此支援目前處於預覽模式,我們很樂意收到任何回饋。
如需更多資訊,請參閱 啟用追蹤 指南。
用於可驗證憑證發行的 OpenID
用於可驗證憑證發行的 OpenID (OID4VCI) 在 Keycloak 中仍是一項實驗性功能,但在此版本中已大幅改進。您可以在 Keycloak OAuth SIG 中找到重要的開發和討論。歡迎 Keycloak 社群的任何人加入。
非常感謝 OAuth SIG 小組的所有成員參與此功能的開發和討論。特別感謝 Francis Pouatcha、Pascal Knüppel、Takashi Norimatsu、Ingrid Kamga、Stefan Wiedemann 和 Thomas Darimont。
DPoP 改進
DPoP (OAuth 2.0 證明持有權) 預覽功能已獲得改進。現在所有授權類型都支援 DPoP。在之前的版本中,此功能僅支援 authorization_code
授權類型。UserInfo 端點也支援 DPoP 令牌類型。
非常感謝 Pascal Knüppel 的貢獻。
移除 GELF 日誌處理程式
GELF 支援已棄用一段時間,並且在此版本中已最終從 Keycloak 中移除。其他日誌處理程式可用且完全支援,可作為 GELF 的替代方案,例如 Syslog。詳細資訊請參閱 日誌記錄指南。
管理 REST API 的輕量級存取令牌
現在可以在管理 REST API 上使用輕量級存取令牌。security-admin-console
和 admin-cli
用戶端現在預設使用輕量級存取令牌,因此「永遠使用輕量級存取令牌」和「允許完整範圍」現在已在這兩個用戶端上啟用。但是,管理主控台中的行為應保持不變。如果您對這兩個用戶端進行了變更,並且將它們用於其他用途,請務必謹慎。
Keycloak JavaScript 轉接器現在是獨立的
Keycloak JavaScript 轉接器現在是一個獨立的程式庫,因此不再從 Keycloak 伺服器靜態提供。目的是將程式庫與 Keycloak 伺服器分離,以便可以獨立重構它,簡化程式碼並使其在未來更容易維護。此外,該程式庫現在不依賴第三方依賴項,這使其更輕巧且更容易在不同環境中使用。
有關變更的完整細節,請參閱 升級指南。
移除主機名稱 v1 功能
已移除已棄用的主機名稱 v1 功能。此功能已在 Keycloak 25 中棄用,並由主機名稱 v2 取代。如果您仍在使用此功能,則必須移轉至主機名稱 v2。如需更多詳細資訊,請參閱 設定主機名稱 (v2) 和 初始移轉指南。
從根目錄自動重新導向至相對路徑
當指定 http-relative-path
屬性時,使用者會自動重新導向至 Keycloak 託管的路徑。這表示當相對路徑設定為 /auth
,且使用者存取 localhost:8080/
時,頁面會重新導向至 localhost:8080/auth
。
當指定 http-management-relative-path
或 http-relative-path
屬性時,管理介面也適用相同規則。
這改善了使用者體驗,因為使用者不再需要明確地將相對路徑設定到 URL。
用戶端原則中的用戶端屬性條件
已在用戶端原則中新增基於用戶端屬性的條件。您可以使用條件來指定具有指定用戶端屬性且具有指定值的用戶端。如用戶端原則的文件所述,評估此條件時可以使用 AND 或 OR 條件。
非常感謝 Yoshiyuki Tabata 的貢獻。
為日誌處理程式指定不同的日誌等級
可以為所有可用的日誌處理程式指定日誌等級,例如 console
、file
或 syslog
。更精細的方法能夠控制整個應用程式的日誌記錄,並根據您的需求進行調整。
如需更多資訊,請參閱 日誌記錄指南。
移除 Proxy 選項
已移除已棄用的 proxy
選項。此選項已在 Keycloak 24 中棄用,並由 proxy-headers
選項與所需的主機名稱選項組合取代。如需更多詳細資訊,請參閱 使用反向 Proxy 和 初始移轉指南。
新增 proxy-trusted-addresses
選項
當 proxy-headers
選項設定時,可以使用 proxy-trusted-addresses
來指定信任的 Proxy 位址許可清單。如果給定請求的 Proxy 位址不受信任,則不會使用相應的 Proxy 標頭值。
新增 proxy-protocol-enabled
選項
proxy-protocol-enabled
選項控制伺服器是否應在為來自 Proxy 後方的請求提供服務時使用 HA PROXY 協定。當設定為 true 時,傳回的遠端位址將是實際連線用戶端的位址。
新增重新載入信任和金鑰資料的選項
可以設定 https-certificates-reload-period
選項來定義 https-* 選項參考的金鑰儲存、信任儲存和憑證檔案的重新載入期間。使用 -1 停用重新載入。預設為 1 小時 (一小時)。
java-keystore
金鑰提供者支援更多演算法和 Vault 機密
已修改 java-keystore
金鑰提供者,它允許從外部 Java 金鑰儲存檔案載入領域金鑰,以管理所有 Keycloak 演算法。此外,可以使用 Vault 設定從儲存區擷取實際金鑰所需的金鑰儲存和金鑰機密。因此,Keycloak 領域可以將任何金鑰外部化到加密檔案,而無需將敏感資料儲存在資料庫中。
有關此主題的更多資訊,請參閱 設定領域金鑰。
新增對 ECDH-ES 加密金鑰管理演算法的支援
現在 Keycloak 允許將 ECDH-ES、ECDH-ES+A128KW、ECDH-ES+A192KW 或 ECDH-ES+A256KW 設定為用戶端的加密金鑰管理演算法。具有橢圓曲線 Diffie-Hellman 短暫靜態 (ECDH-ES) 規格的金鑰協定為 JWT 引入了三個新的標頭參數:epk
、apu
和 apv
。目前,Keycloak 實作僅管理強制性的 epk
,而其他兩個(可選)則從不新增至標頭。如需有關這些演算法的更多資訊,請參閱 JSON Web 演算法 (JWA)。
此外,還提供了一個新的金鑰提供者 ecdh-generated
,用於產生領域金鑰,並將對 ECDH 演算法的支援新增至 Java 金鑰儲存提供者中。
非常感謝 Justin Tay 的貢獻。
在領域中支援多個社群代理程式執行個體
現在可以在領域中擁有同一社群代理程式的多個執行個體。
大多數情況下,領域不需要同一社群代理程式的多個執行個體。但是,由於引入了 organization
功能,應該可以將同一社群代理程式的不同執行個體連結到不同的組織。
建立社群代理程式時,您現在應提供 Alias
,並可選擇性提供 Display name
,就像任何其他代理程式一樣。
憑證的新通用事件類型
現在已提供用於更新 (UPDATE_CREDENTIAL
) 和移除 (REMOVE_CREDENTIAL
) 憑證的通用事件。憑證類型會在事件的 credential_type
屬性中描述。新的事件類型由電子郵件事件監聽器支援。
以下事件類型現已棄用,並將在未來版本中移除:UPDATE_PASSWORD
、UPDATE_PASSWORD_ERROR
、UPDATE_TOTP
、UPDATE_TOTP_ERROR
、REMOVE_TOTP
、REMOVE_TOTP_ERROR
登入主題中可自訂的頁尾
base/login
和 keycloak.v2/login
主題中的 template.ftl
檔案現在允許自訂登入框的頁尾。這可用於顯示常用連結或在頁面末尾包含自訂腳本。
新的 footer.ftl
範本提供了一個 content
巨集,它會在「登入框」的底部呈現。
KeycloakRealmImport CR 支援佔位符替換
KeycloakRealmImport CR 現在公開 spec.placeholders
,以便在匯入時建立用於佔位符替換的環境變數。
如需更多詳細資訊,請參閱 Operator Realm 匯入。
Infinispan 編組變更為 Infinispan Protostream
編組是將 Java 物件轉換為位元組,以便在 Keycloak 伺服器之間透過網路傳送的過程。在 Keycloak 26 中,我們將編組格式從 JBoss 編組變更為 Infinispan Protostream。
JBoss 編組和 Infinispan Protostream 彼此不相容,不正確的使用可能會導致資料遺失。因此,升級到此版本時,所有快取都會被清除。 |
Infinispan Protostream 基於 Protocol Buffers (proto 3),它具有向後/向前相容的優點。
移除 realm 時不再觸發群組相關事件
為了提高群組的可擴展性,現在在移除 realm 時會直接從資料庫中移除群組。因此,當移除 realm 時,不再觸發群組相關事件,例如 GroupRemovedEvent
。
如需有關如何遷移的資訊,請參閱升級指南。
身份提供者不再可從 realm 表示法取得
作為改進 realm 和組織在擁有許多身份提供者時的可擴展性的一部分,realm 表示法不再保留身份提供者的列表。但是,在匯出 realm 時,它們仍然可以從 realm 表示法中取得。
如需有關如何遷移的資訊,請參閱升級指南。
保護應用程式文件轉換為指南格式
保護應用程式和服務 文件已轉換為類似於先前版本中轉換的 伺服器安裝和設定 文件的新格式。該文件現在可在 Keycloak 指南 下取得。
移除舊版 Cookie
Keycloak 不再傳送 _LEGACY
Cookie,這些 Cookie 是作為舊版瀏覽器不支援 Cookie 上的 SameSite
標籤的變通方法而引入的。
_LEGACY
Cookie 也服務於另一個目的,即允許從不安全的環境登入。雖然這在 Keycloak 的生產部署中完全不建議,但在 localhost
以外透過 http
存取 Keycloak 還是很常見的。作為 _LEGACY
Cookie 的替代方法,Keycloak 現在不會設定 secure
標籤,而是設定 SameSite=Lax
而不是 SameSite=None
,當它偵測到使用不安全的環境時。
Keycloak 25.0.0
移除帳戶主控台 v2 主題
Keycloak 中已移除帳戶主控台 v2 主題。此主題已在 Keycloak 24 中棄用,並由帳戶主控台 v3 主題取代。如果您仍然使用此主題,則應遷移到帳戶主控台 v3 主題。
移除大多數 Java 轉接器
如先前 Keycloak 版本中的發行說明所述,大多數 Java 轉接器現在已從 Keycloak 程式碼庫和下載頁面中移除。
對於 OAuth 2.0/OIDC,這包括移除 Tomcat 轉接器、WildFly/EAP 轉接器、Servlet Filter 轉接器、KeycloakInstalled
桌面轉接器、jaxrs-oauth-client
轉接器、JAAS 登入模組、Spring 轉接器和 SpringBoot 轉接器。您可以查看 我們較早的文章 以了解一些替代方案的列表。
對於 SAML,這包括移除 Tomcat 轉接器和 Servlet filter 轉接器。WildFly 和 JBoss EAP 仍然支援 SAML 轉接器。
仍然支援通用的授權客戶端程式庫,我們仍然計劃支援它。它旨在與任何其他 OAuth 2.0 或 OpenID Connect 程式庫結合使用。您可以查看 快速入門 以了解一些範例,其中此授權客戶端程式庫與第三方 Java 轉接器(如 Elytron OIDC 或 SpringBoot)一起使用。您也可以查看快速入門,以了解與 WildFly 一起使用的 SAML 轉接器的範例。
升級至 PatternFly 5
在 Keycloak 24 中,歡迎頁面已更新為使用 PatternFly 5,這是 Keycloak 使用者介面基礎的最新版本設計系統。在此版本中,管理主控台和帳戶主控台也已更新為使用 PatternFly 5。如果您想要擴展和自訂管理主控台和帳戶主控台,請查看 PatternFly 5 中的變更 並相應地更新您的自訂。
Argon2 密碼雜湊
Argon2 現在是 Keycloak 在非 FIPS 環境中使用的預設密碼雜湊演算法。
Argon2 是 2015 年密碼雜湊競賽的獲勝者,並且是 OWASP 推薦的雜湊演算法。
在 Keycloak 24 中,PBKDF2 的預設雜湊迭代次數從 27.5K 增加到 210K,導致產生密碼雜湊所需的 CPU 時間增加了 10 倍以上。使用 Argon2,可以在幾乎與先前 Keycloak 版本相同的 CPU 時間下實現更好的安全性。一個缺點是 Argon2 需要更多記憶體,這是為了抵抗 GPU 攻擊的要求。Keycloak 中 Argon2 的預設值每個雜湊請求需要 7MB。為了防止過度的記憶體和 CPU 使用,Argon2 並行計算雜湊的次數預設限制為 JVM 可用的核心數量。為了支援 Argon2 的記憶體密集特性,我們已將預設 GC 從 ParallelGC 更新為 G1GC,以獲得更好的堆積利用率。
請注意,Argon2 不符合 FIPS 140-2 標準。因此,如果您在 FIPS 環境中,預設演算法仍為 PBKDF2。另請注意,如果您在非 FIPS 環境中並且計劃遷移到 FIPS 環境,請考慮在一開始就將密碼原則變更為符合 FIPS 標準的演算法,例如 pbkdf2-sha512
。否則,使用者在切換到 FIPS 環境後將無法登入。
新的主機名稱選項
為了回應先前主機名稱設定中遇到的複雜性和缺乏直觀性,我們很榮幸推出主機名稱 v2 選項。
我們已聽取您的意見反應,解決了棘手的問題,並為管理主機名稱設定創造了更順暢的體驗。請注意,即使這些選項背後的行為也已變更,並且需要您的注意 - 如果您正在處理自訂主機名稱設定。
預設情況下支援主機名稱 v2 選項,因為舊的主機名稱選項已棄用,並將在後續版本中移除。您應該盡快遷移到它們。
預設情況下會啟用新的選項,因此 Keycloak 將無法識別舊的選項。
如需有關如何遷移的資訊,請參閱升級指南。
持續的使用者工作階段
先前版本的 Keycloak 僅將離線使用者和離線用戶端工作階段儲存在資料庫中。新的功能 persistent-user-sessions
不僅將線上使用者工作階段和線上用戶端工作階段儲存在記憶體中,還儲存在資料庫中。這將允許使用者即使所有 Keycloak 實例重新啟動或升級,也保持登入狀態。
此功能是預覽功能,預設情況下已停用。若要使用它,請將以下內容新增至您的組建命令
bin/kc.sh build --features=persistent-user-sessions ...
如需有關如何升級的資訊,請參閱升級指南。
Cookie 更新
為所有 Cookie 設定 SameSite 屬性
以下 Cookie 過去未使用設定 SameSite
屬性,這在最新的瀏覽器版本中會導致它們預設為 SameSite=Lax
-
KC_STATE_CHECKER
現在設定為SameSite=Strict
-
KC_RESTART
現在設定為SameSite=None
-
KEYCLOAK_LOCALE
現在設定為SameSite=None
-
KEYCLOAK_REMEMBER_ME
現在設定為SameSite=None
預設值 SameSite=Lax
會導致基於 POST 的綁定出現問題,這主要適用於 SAML,但也用於某些 OpenID Connect / OAuth 2.0 流程。
已移除已棄用的 Cookie 方法
已移除以下用於設定自訂 Cookie 的 API
-
ServerCookie
- 已被NewCookie.Builder
取代 -
LocaleSelectorProvider.KEYCLOAK_LOCALE
- 已被CookieType.LOCALE
取代 -
HttpCookie
- 已被NewCookie.Builder
取代 -
HttpResponse.setCookieIfAbsent(HttpCookie cookie)
- 已被HttpResponse.setCookieIfAbsent(NewCookie cookie)
取代
解決過期驗證工作階段的「您已登入」問題
Keycloak 23 版本針對使用者在多個瀏覽器分頁中並行驗證時的情況進行了改進。然而,此改進並未解決驗證工作階段過期的情況。現在,當使用者在一個瀏覽器分頁中已登入,而另一個瀏覽器分頁中的驗證工作階段過期時,Keycloak 能夠重新導向回客戶端應用程式並傳回 OIDC/SAML 錯誤,因此客戶端應用程式可以立即重試驗證,通常會因為 SSO 工作階段而自動登入應用程式。如需更多詳細資訊,請參閱伺服器管理指南驗證工作階段。
讓輕量級存取權杖更加輕量
在之前的版本中,已新增對輕量級存取權杖的支援。在此版本中,我們設法從輕量級存取權杖中移除更多內建宣告。宣告是由協定對應器新增的。其中一些會影響常規存取權杖或 ID 權杖,因為它們並非 OIDC 規格嚴格要求的。
-
現在,
sub
和auth_time
宣告由協定對應器新增,這些對應器預設在新的用戶端範圍basic
上設定,並會自動新增至所有用戶端。宣告仍會像以前一樣新增至 ID 權杖和存取權杖,但不會新增至輕量級存取權杖。 -
nonce
宣告現在僅新增至 ID 權杖。它不會新增至常規存取權杖或輕量級存取權杖。為了向後相容性,您可以使用協定對應器將此宣告新增至存取權杖,這需要明確設定。 -
session_state
宣告現在不會新增至任何權杖。如果需要,仍然可以透過協定對應器新增它。規格仍然支援另一個專用的sid
宣告,它在先前的版本中也可用,並且具有完全相同的值。
如需更多詳細資訊,請參閱升級指南。
在權杖內省端點中支援 application/jwt 媒體類型
當您叫用權杖內省端點時,可以使用 HTTP 標頭 Accept: application/jwt
。當針對特定用戶端啟用時,它會從權杖內省端點傳回具有完整 JWT 存取權杖的宣告 jwt
,這對於呼叫內省端點的用戶端使用輕量級存取權杖的情況特別有用。感謝 Thomas Darimont 的貢獻。
必要的動作改進
在管理主控台中,您現在可以在特定領域的「必要動作」索引標籤中設定一些必要動作。目前,「更新密碼」是唯一內建的可設定必要動作。它支援設定「驗證的最大期限」,這是使用者可以使用 kc_action
參數(例如,在帳戶主控台中更新密碼時使用)更新其密碼而無需重新驗證的最大時間。必要動作的排序也已改進。當驗證期間有多個必要動作時,無論這些動作是在驗證期間設定的(例如透過 kc_action
參數)還是由管理員手動新增至使用者帳戶的動作,所有動作都會一起排序。感謝 Thomas Darimont 和 Daniel Fesenmeyer 的貢獻。
通行金鑰改進
新增了對通行金鑰條件式 UI 的支援。當啟用通行金鑰預覽功能時,會有一個專用的驗證器可用,這表示您可以從可用的通行金鑰帳戶清單中選擇,並根據該帳戶驗證使用者。感謝 Takashi Norimatsu 的貢獻。
SAML 的預設用戶端設定檔
已新增用於保護 SAML 用戶端的預設用戶端設定檔。當在管理主控台中瀏覽領域的用戶端原則時,您會看到一個新的用戶端設定檔 saml-security-profile
。當使用此設定檔時,會為 SAML 用戶端套用安全性最佳實務,例如強制執行簽章、停用 SAML 重新導向繫結,以及禁止使用萬用字元重新導向 URL。
OpenID 可驗證憑證發行 - 實驗性支援
正在開發對 OpenID 可驗證憑證發行 (OID4VCI) 的支援。目前,這仍在開發中,但正在逐步新增功能。Keycloak 可以作為 OID4VC 發行者,支援預先授權程式碼流程。支援 JWT-VC、SD-JWT-VC 和 VCDM 格式的可驗證憑證。感謝 OAuth SIG 小組成員的貢獻和意見反應,特別感謝 Stefan Wiedemann、Francis Pouatcha、Takashi Norimatsu 和 Yutaka Obuchi。
依使用者屬性搜尋不再區分大小寫
當依使用者屬性搜尋使用者時,Keycloak 不再強制執行小寫比較來搜尋使用者屬性名稱。此變更的目的是透過使用 Keycloak 在使用者屬性表格上的原生索引來加速搜尋。如果您的資料庫定序不區分大小寫,則搜尋結果將保持不變。如果您的資料庫定序區分大小寫,您可能會看到比以前少的搜尋結果。
授權用戶端程式庫中的重大修復
對於 keycloak-authz-client
程式庫的使用者,呼叫 AuthorizationResource.getPermissions(…)
現在會正確傳回 List<Permission>
。
先前,即使方法宣告聲明為 List<Permission>
,它也會在執行階段傳回 List<Map>
。
此修復將會中斷依賴於將 List 或其內容轉換為 List<Map>
的程式碼。如果您曾經以任何方式使用過此方法,您可能會這樣做並受到影響。
度量和健全狀況端點的管理連接埠
度量和健全狀況檢查端點不再能透過標準 Keycloak 伺服器連接埠存取。由於這些端點應對外隱藏,因此它們可以在單獨的預設管理連接埠 9000
上存取。
這允許在 Kubernetes 環境中不將其暴露給使用者作為標準 Keycloak 端點。新的管理介面提供了一組新的選項,並且是完全可設定的。
Keycloak Operator 預設會啟用管理介面。如需更多詳細資訊,請參閱設定管理介面。
用於遠端記錄的 Syslog
Keycloak 現在支援 Syslog 通訊協定進行遠端記錄。它利用 RFC 5424 中定義的通訊協定。依預設,syslog 處理常式已停用,但啟用後,它會將所有記錄事件傳送至遠端 syslog 伺服器。
如需更多資訊,請參閱設定記錄指南。
變更為 EnvironmentDependentProviderFactory
類別
方法 EnvironmentDependentProviderFactory.isSupported()
在數個版本中已棄用,現在已移除。
如需更多詳細資訊,請參閱升級指南。
所有 cache
選項都是執行階段
現在可以在執行階段指定 cache
、cache-stack
和 cache-config-file
選項。這消除了由於它們而執行建置階段並重建映像的需求。
如需更多詳細資訊,請參閱升級指南。
從 AccessToken
、IDToken
和 JsonWebToken
類別中移除已棄用的方法
在此版本中,我們終於從以下類別中移除了已棄用的方法
-
AccessToken
-
IDToken
-
JsonWebToken
如需更多詳細資訊,請參閱升級指南。
方法 getExp
已新增至 SingleUseObjectKeyModel
由於從 AccessToken
、IDToken
和 JsonWebToken
中移除了已棄用的方法,SingleUseObjectKeyModel
也進行了變更,以與與到期值相關的方法名稱保持一致。
如需更多詳細資訊,請參閱升級指南。
推出對客戶身分與存取管理 (CIAM) 和多租戶的支援
在此版本中,我們將 Keycloak 組織作為技術預覽功能發佈。
此功能為領域提供了一些核心 CIAM 功能,這些功能將作為未來更多功能的基準,以解決企業對企業 (B2B) 和企業對企業對客戶 (B2B2C) 用例。
在功能方面,此功能已完成。但是,我們仍然需要努力使其在下一個主要版本中得到完全支援。剩餘的工作主要是在準備此功能以用於生產部署,重點是可擴展性。此外,根據我們在下一個主要版本之前收到的回饋,我們最終可能會接受其他功能並為此功能增加更多價值,而不會損害其藍圖。
如需更多詳細資訊,請參閱伺服器管理指南。
Keycloak 24.0.4
透過管理員使用者 API 更新使用者時,不再支援對使用者屬性進行部分更新
當透過管理員使用者 API 更新使用者屬性時,您無法在更新使用者屬性時執行部分更新,包括根屬性,如 username
、email
、firstName
和 lastName
。
如需更多詳細資訊,請參閱升級指南。
Keycloak 24.0.1
Operator 部署 nightly 版本而非 24.0.0
由於使用 Operator 部署 Keycloak 時的發布流程出現問題,導致安裝了 nightly
容器,而不是 24.0.0
。
作為此問題的快速修正,24.0.0
容器被標記為 nightly
,並且暫時停用了 nightly
發布版本。
如果您在昨天歐洲中部時間下午 5 點之前使用 Operator 安裝或升級到 24.0.0
,資料庫可能已使用錯誤的版本更新。若要檢查您是否受到影響,請連線到您的資料庫並執行以下 SQL 命令
SELECT * from migration_model WHERE version = '999.0.0';
如果上述命令傳回相符的列,您將需要採取一些動作,否則未來的版本將不會執行資料庫遷移。若要解決此問題,請執行以下 SQL 命令
UPDATE migration_model SET version = '24.0.0' WHERE version = '999.0.0';
Keycloak 24.0.0
支援的使用者設定檔和漸進式設定檔
使用者設定檔預覽功能已升級為完全支援,並且預設啟用使用者設定檔。
在過去幾個月中,Keycloak 團隊投入了大量的精力來打磨使用者設定檔功能,使其獲得完全支援。在此版本中,我們繼續努力。根據來自我們優秀社群的徹底測試和回饋,進行了許多改進、修正和潤飾。
以下是此功能的一些重點:
-
對使用者和管理員可以管理的屬性進行精細控制,以便您可以防止設定意外的屬性和值。
-
能夠指定在表單上管理和顯示給一般使用者或管理員的用戶屬性。
-
動態表單 - 以前,使用者建立或更新其設定檔的表單包含四個基本屬性,例如使用者名稱、電子郵件、名字和姓氏。新增任何屬性(或移除某些預設屬性)需要您建立自訂主題。現在可能不需要自訂主題,因為使用者會根據特定部署的需求,確切看到所要求的屬性。
-
驗證 - 能夠為使用者屬性指定驗證器,包括內建的驗證器,您可以使用它們來指定最大或最小長度、特定正規表示式,或將特定屬性限制為 URL 或數字。
-
註解 - 能夠指定特定屬性應以文字區域、具有指定選項的 HTML 選擇清單、日曆或許多其他選項的方式呈現。您也可以將 JavaScript 程式碼繫結到特定欄位,以變更屬性的呈現方式並自訂其行為。
-
漸進式設定檔 - 能夠指定某些欄位僅針對
scope
參數的特定值才在表單上是必要的或可用。這有效地允許漸進式設定檔。您不再需要在註冊期間要求使用者填寫二十個屬性;您可以根據使用者使用的個別用戶端應用程式的要求,逐步要求使用者填寫屬性。 -
從先前版本的遷移 - 現在始終啟用使用者設定檔,但對於那些未使用此功能的人來說,其運作方式與以前相同。您可以受益於使用者設定檔功能,但您不需要使用它們。有關遷移說明,請參閱升級指南。
使用者設定檔作為受支援功能的第一個版本只是一個起點,也是提供更多有關身分管理功能的基礎。
我們要衷心感謝 Keycloak 傑出的社群,因為許多想法、需求和貢獻都來自社群!特別感謝
有關使用者設定檔功能的更多詳細資訊,請參閱伺服器管理指南。
使用者設定檔 SPI 的重大變更
在此版本中,使用者設定檔 SPI 的變更可能會影響基於此 SPI 的現有實作。有關更多詳細資訊,請參閱升級指南。
Freemarker 範本的變更,以根據使用者設定檔和領域來呈現頁面
在此版本中,更新了以下範本,以便可以根據設定到領域的使用者設定檔配置來動態呈現屬性
-
login-update-profile.ftl
-
register.ftl
-
update-email.ftl
如需更多詳細資訊,請參閱升級指南。
透過代理程式首次登入時,用於更新設定檔頁面的新 Freemarker 範本
在此版本中,當使用者第一次透過代理程式驗證時,伺服器會使用 idp-review-user-profile.ftl
範本呈現更新設定檔頁面。
如需更多詳細資訊,請參閱升級指南。
Java 介面卡的棄用和移除
早在 2022 年,我們就宣布了Keycloak 19 中 Keycloak 介面卡的棄用。為了給社群更多的時間來採用,這項時程被延後了。
有鑑於此,這將是最後一個包含 OpenID Connect 和 SAML 介面卡的 Keycloak 主要版本。由於 Jetty 9.x 自 2022 年起就沒有受到支援,因此 Jetty 介面卡已在此版本中移除。
通用授權用戶端程式庫將繼續受到支援,並且旨在與任何其他 OAuth 2.0 或 OpenID Connect 程式庫結合使用。
我們將繼續提供的唯一介面卡是適用於最新版本 WildFly 和 EAP 8.x 的 SAML 介面卡。繼續支援此介面卡的原因是,Keycloak 中大部分 SAML 程式碼都是 WildFly 的貢獻。作為此貢獻的一部分,我們同意長期維護適用於 WildFly 和 EAP 的 SAML 介面卡。
新的歡迎頁面
重新設計了 Keycloak 首次使用時出現的「歡迎」頁面。它提供了更好的設定體驗,並符合最新版本的PatternFly。簡化的頁面佈局僅包含用於註冊第一位管理使用者的表單。完成註冊後,使用者會直接被傳送到管理主控台。
如果您使用自訂主題,您可能需要更新它以支援新的歡迎頁面。有關詳細資訊,請參閱升級指南。
新的帳戶主控台現在為預設值
我們在 Keycloak 22 中以預覽功能的形式引入了第 3 版帳戶主控台。在此版本中,我們將其設為預設版本,並在此過程中棄用第 2 版,該版本將在後續版本中移除。
這個新版本內建支援使用者設定檔功能,讓管理員可以設定帳戶主控台中可供使用者使用的屬性,並在登入後將使用者直接導向其個人帳戶頁面。
如果您正在使用或擴展此主題的自訂功能,您可能需要執行其他遷移。有關更多詳細資訊,請參閱升級指南。
Keycloak JS
在 package.json
中使用 exports
欄位
Keycloak JS 介面卡現在在其 package.json
中使用exports
欄位。此變更改進了對 Webpack 5 和 Vite 等更現代的捆綁器的支援,但會帶來一些不可避免的重大變更。有關更多詳細資訊,請參閱升級指南。
預設啟用 PKCE
Keycloak JS 介面卡現在預設將 pkceMethod
選項設定為 S256
。此變更為所有使用此介面卡的應用程式啟用「驗證金鑰交換碼」(Proof Key Code Exchange) (PKCE)。如果您在不支援 PKCE 的系統上使用此介面卡,您可以將 pkceMethod
選項設定為 false
以停用它。
密碼雜湊的變更
在此版本中,我們調整了密碼雜湊的預設值,以符合OWASP 密碼儲存建議。
作為此變更的一部分,預設密碼雜湊提供者已從 pbkdf2-sha256
變更為 pbkdf2-sha512
。此外,基於 pbkdf2
的密碼雜湊演算法的預設雜湊迭代次數也已變更。此變更表示更好的安全性,並與最新建議一致,但會影響效能。可以透過將密碼原則 hashAlgorithm
和 hashIterations
新增到您的領域來堅持使用舊行為。有關更多詳細資訊,請參閱升級指南。
OAuth/OIDC 相關改進
輕量存取權杖支援
此版本包含對輕量存取權杖的支援。因此,您可以為指定的用戶端提供較小的存取權杖。這些權杖只有少數宣告,這就是它們較小的原因。請注意,輕量存取權杖預設仍然是使用領域金鑰簽署的 JWT,並且仍然包含一些非常基本的宣告。
此版本引入了一個新增至輕量存取權杖旗標,該旗標在某些 OIDC 通訊協定對應器上可用。使用此旗標來指定是否應將特定宣告新增至輕量存取權杖。預設為關閉,這表示不會新增大多數宣告。
此外,還有一個用戶端策略執行器。您可以使用它來指定特定的用戶端請求應使用輕量級存取權杖還是常規存取權杖。除了執行器之外,您也可以在用戶端進階設定中使用「永遠使用輕量級存取權杖」旗標,這會導致該用戶端永遠使用輕量級存取權杖。如果需要更高的彈性,則可以使用執行器作為替代方案。例如,您可以選擇預設使用輕量級存取權杖,但僅針對指定的 scope 參數使用常規權杖。
先前的版本新增了一個「新增至權杖內省」開關。您可以使用它將存取權杖中不存在的宣告新增到內省端點回應中。
感謝 Shigeyuki Kabano 的貢獻,並感謝 Takashi Norimatsu 對此功能提供的協助和審閱。
OAuth 2.1 支援
此版本包含可選的 OAuth 2.1 支援。此版本中引入了新的用戶端策略設定檔,管理員可以使用這些設定檔來確保用戶端和特定的用戶端請求符合 OAuth 2.1 規範。針對機密用戶端和公用用戶端分別有專用的用戶端設定檔。感謝 Takashi Norimatsu 和 Shigeyuki Kabano 的貢獻。
在重新整理權杖流程中支援 scope 參數
從這個版本開始,支援 OAuth2/OIDC 端點中用於權杖重新整理的 scope 參數。使用此參數來請求範圍小於原始授予範圍的存取權杖,這表示您無法增加存取權杖範圍。此範圍限制不會影響已重新整理的重新整理權杖範圍。此功能按照 OAuth2 規範中所述運作。感謝 Konstantinos Georgilakis 的貢獻。
用於安全重新導向 URI 的用戶端策略執行器
引入了一個新的用戶端策略執行器 secure-redirect-uris-enforcer
。您可以使用它來限制用戶端可以使用哪些重新導向 URI。例如,您可以指定用戶端重新導向 URI 不能有萬用字元、應該僅來自特定網域、必須符合 OAuth 2.1 規範等等。感謝 Lex Cao 和 Takashi Norimatsu 的貢獻。
用於強制執行 DPoP 的用戶端策略執行器
引入了一個新的用戶端策略執行器 dpop-bind-enforcer
。如果啟用了 dpop
預覽,您可以使用它來強制特定用戶端使用 DPoP。感謝 Takashi Norimatsu 的貢獻。
支援 EdDSA
您可以建立 EdDSA 領域金鑰,並將其用作各種用戶端的簽章演算法。例如,您可以使用這些金鑰來簽署權杖,或用於使用簽署的 JWT 進行用戶端驗證。此功能包含身分中介,其中 Keycloak 本身會簽署用於第三方身分提供者的 private_key_jwt
驗證的用戶端斷言。感謝 Takashi Norimatsu 和 Muhammad Zakwan Bin Mohd Zahid 的貢獻。
JavaKeystore 提供者支援 EC 金鑰
用於提供領域金鑰的提供者 JavaKeystoreProvider
現在除了先前支援的 RSA 金鑰之外,還支援 EC 金鑰。感謝 Stefan Wiedemann 的貢獻。
在針對身分提供者使用 private_key_jwt 驗證時,將 X509 指紋新增至 JWT 的選項
當使用私密金鑰簽署的 JWT 進行用戶端驗證時,OIDC 身分提供者現在具有「將 X.509 標頭新增至 JWT」選項。此選項對於與某些需要 JWT 上存在指紋的身分提供者(例如 Azure AD)進行互通操作時非常有用。感謝 MT 的貢獻。
OAuth 授權類型 SPI
Keycloak 程式碼庫包含內部更新,以引入 OAuth 授權類型 SPI。此更新在引入 Keycloak OAuth 2 權杖端點支援的自訂授權類型時,提供了額外的彈性。感謝 Dmitry Telegin 的貢獻。
CORS 改善
與 CORS 相關的 Keycloak 功能已提取到 SPI 中,這可以提供額外的彈性。請注意,CorsSPI
是內部元件,可能會在未來的版本中變更。感謝 Dmitry Telegin 的貢獻。
信任儲存改善
Keycloak 引入了改良的信任儲存配置選項。Keycloak 信任儲存現在在整個伺服器中使用,包括外寄連線、mTLS 和資料庫驅動程式。您不再需要為個別區域配置單獨的信任儲存。若要配置信任儲存,您可以將信任儲存檔案或憑證放入預設的 conf/truststores
中,或使用新的 truststore-paths
配置選項。有關詳細資訊,請參閱相關的 指南。
版本化的功能
功能現在支援版本控制。為了保持回溯相容性,所有現有的功能(包括 account2
和 account3
)都標記為版本 1。新引入的功能將使用版本控制,這表示使用者可以在所需功能的不同實作之間進行選擇。
有關詳細資訊,請參閱功能指南。
SAML 身分提供者的自動憑證管理
現在可以將 SAML 身分提供者配置為自動從 IDP 實體中繼資料描述符端點下載簽署憑證。為了使用新功能,請在提供者中配置 Metadata descriptor URL
選項(發佈具有憑證的 IDP 中繼資料資訊的 URL),並將 Use metadata descriptor URL
設定為 ON
。憑證會從該 URL 自動下載並快取在 public-key-storage
SPI 中。憑證也可以使用提供者頁面中的操作組合,從管理主控台重新載入或匯入。
有關新選項的詳細資訊,請參閱文件。
負載平衡器的非封鎖健全狀況檢查
新增了一個可在 /lb-check
取得的新健全狀況檢查端點。執行在事件迴圈中執行,這表示即使在 Keycloak 需要處理要求佇列中等待的許多請求的超載情況下,此檢查也具有回應性。例如,此行為在多站點部署中很有用,可避免故障轉移到另一個負載較重的站點。該端點目前正在檢查內嵌式和外部 Infinispan 快取的可用性。稍後可能會新增其他檢查。
預設情況下不提供此端點。若要啟用它,請使用 multi-site
功能執行 Keyloak。有關更多詳細資訊,請參閱啟用和停用功能。
Keycloak CR 優化欄位
Keycloak CR 現在包含一個 startOptimized
欄位,可以用於覆寫有關是否為啟動命令使用 --optimized
旗標的預設假設。因此,即使在使用自訂 Keycloak 映像時,您也可以使用 CR 來配置建置時間選項。
增強的反向 Proxy 設定
現在可以使用新的 --proxy-headers
選項,單獨啟用對 Forwarded
或 X-Forwarded-*
標頭的剖析。有關詳細資訊,請參閱反向 Proxy 指南。原始的 --proxy
選項現在已棄用,並將在未來的版本中移除。有關移轉說明,請參閱升級指南。
在管理 API 和帳戶內容中對使用者表示法的變更
在此版本中,我們正在封裝根使用者屬性(例如 username
、email
、firstName
、lastName
和 locale
),方法是將它們移至基本/抽象類別,以便在同時使用管理和帳戶 REST API 時,對這些屬性的序列化和還原序列化方式進行對齊。
此策略可確保用戶端管理屬性時的一致性,並確保它們符合為領域設定的使用者設定檔配置。
如需更多詳細資訊,請參閱升級指南。
循序載入離線會話和遠端會話
從這個版本開始,Keycloak 叢集的第一個成員將循序載入遠端會話,而不是並行載入。如果啟用了離線會話預先載入,則也會循序載入這些會話。
如需更多詳細資訊,請參閱升級指南。
無法再代表另一個已驗證的使用者執行動作
在此版本中,如果使用者已驗證且動作繫結到另一個使用者,您將無法再執行諸如電子郵件驗證之類的動作。例如,如果電子郵件連結繫結到其他帳戶,則使用者無法完成驗證電子郵件流程。
電子郵件驗證流程的變更
在此版本中,如果使用者嘗試追蹤連結以驗證電子郵件,並且先前已驗證過該電子郵件,則會顯示適當的訊息。
此外,還會觸發一個新的錯誤 (EMAIL_ALREADY_VERIFIED
) 事件,以指示嘗試驗證已驗證的電子郵件。您可以使用此事件來追蹤在連結洩漏時可能發生的劫持使用者帳戶嘗試,或在使用者無法識別該動作時發出警示。
已棄用的離線會話預先載入
Keycloak 的預設行為是依需求載入離線會話。在啟動時預先載入它們的舊行為現在已棄用,因為在啟動時預先載入它們無法隨著會話數量的增加而良好地擴展,並增加了 Keycloak 的記憶體使用量。舊的行為將在未來的版本中移除。
如需更多詳細資訊,請參閱升級指南。
記憶體中離線會話存留期覆寫的配置選項
為了降低記憶體需求,我們引入了一個配置選項,以縮短匯入 Infinispan 快取的離線會話的存留期。目前,預設情況下會停用離線會話存留期覆寫。
有關詳細資訊,請參閱伺服器管理指南。
暴力破解保護變更
暴力破解保護機制進行了一些增強。
-
當嘗試使用 OTP 或恢復碼進行驗證時,若因暴力破解保護而失敗,則會使作用中的驗證工作階段失效。任何後續嘗試使用該工作階段進行驗證都會失敗。
-
在先前的 Keycloak 版本中,管理員必須選擇因帳戶遭受暴力破解攻擊而暫時或永久停用使用者。現在,管理員可以在使用者被暫時鎖定一定次數後永久停用該使用者。
-
failedLoginNotBefore
屬性已新增至brute-force/users/{userId}
端點。
授權原則
在先前的 Keycloak 版本中,當刪除使用者、群組或客戶端原則的最後一個成員時,該原則也會被刪除。不幸的是,如果該原則在彙總原則中使用,則可能會導致權限提升。為了避免權限提升,效果原則不再被刪除,管理員將需要更新這些原則。
Keycloak CR 快取設定檔選項
Keycloak CR 現在允許透過使用 cache
規範的 configMapFile
欄位來指定 cache-config-file
選項,例如:
apiVersion: k8s.keycloak.org/v2alpha1
kind: Keycloak
metadata:
name: example-kc
spec:
...
cache:
configMapFile:
name: my-configmap
key: config.xml
Keycloak CR 資源選項
Keycloak CR 現在允許指定 resources
選項,以管理 Keycloak 容器的運算資源。它提供了透過 Keycloak CR,針對主要的 Keycloak 部署以及透過 Realm Import CR,針對領域匯入作業,獨立請求和限制資源的能力。
當未指定值時,預設的 requests
記憶體會設定為 1700MiB
,而 limits
記憶體會設定為 2GiB
。
您可以根據您的需求指定自訂值,如下所示:
apiVersion: k8s.keycloak.org/v2alpha1
kind: Keycloak
metadata:
name: example-kc
spec:
...
resources:
requests:
cpu: 1200m
memory: 896Mi
limits:
cpu: 6
memory: 3Gi
如需更多詳細資訊,請參閱 Operator 進階配置。
臨時鎖定記錄已替換為事件
現在有一個新的事件 USER_DISABLED_BY_TEMPORARY_LOCKOUT
,當使用者被暴力破解保護器暫時鎖定時會觸發。由於新事件以結構化形式提供資訊,因此已移除 ID 為 KC-SERVICES0053
的記錄。
如需更多詳細資訊,請參閱升級指南。
Cookie 更新
Cookie 處理程式碼已重構和改進,包括新的 Cookie 提供者。這為 Keycloak 處理的 Cookie 提供了更好的統一性,並在需要時能夠引入圍繞 Cookie 的配置選項。
SAML 用戶屬性對應器針對 NameID 現在僅建議有效的 NameID 格式
用戶屬性對應器針對 NameID 允許將 Name ID Format
選項設定為以下值:
-
urn:oasis:names:tc:SAML:1.1:nameid-format:X509SubjectName
-
urn:oasis:names:tc:SAML:1.1:nameid-format:WindowsDomainQualifiedName
-
urn:oasis:names:tc:SAML:2.0:nameid-format:kerberos
-
urn:oasis:names:tc:SAML:2.0:nameid-format:entity
但是,Keycloak 不支援接收具有這些 NameIDPolicy
之一的 AuthnRequest
文件,因此這些對應器永遠不會被使用。支援的選項已更新為僅包含以下 Name ID 格式:
-
urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress
-
urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified
-
urn:oasis:names:tc:SAML:2.0:nameid-format:persistent
-
urn:oasis:names:tc:SAML:2.0:nameid-format:transient
在容器中執行時的不同 JVM 記憶體設定
Keycloak 不再指定初始和最大堆積大小的硬編碼值,而是使用相對於容器總記憶體的相對值。JVM 選項 -Xms
和 -Xmx
已被 -XX:InitialRAMPercentage
和 -XX:MaxRAMPercentage
取代。
這可能會顯著影響記憶體消耗,因此可能需要執行特定的操作。 |
如需更多詳細資訊,請參閱升級指南。
GELF 記錄處理器已棄用
由於提供與 GELF 集成的 底層程式庫 已終止支援,Keycloak 將不再支援開箱即用的 GELF 記錄處理器。此功能將在未來的版本中移除。如果您需要外部記錄管理,請考慮使用檔案記錄解析。
支援多站點主動-被動部署
將 Keycloak 部署到多個獨立站點對於某些環境來說至關重要,以提供高可用性和從故障中快速恢復的能力。此版本支援 Keycloak 的主動-被動部署。
若要開始,請使用 高可用性指南,其中還包括將高可用性 Keycloak 部署到雲端環境的完整藍圖。
Keycloak 23.0.0
OpenID Connect / OAuth 2.0
FAPI 2 草案支援
Keycloak 具有新的用戶端設定檔 fapi-2-security-profile
和 fapi-2-message-signing
,確保 Keycloak 在與用戶端通訊時強制執行最新的 FAPI 2 草案規範。感謝 Takashi Norimatsu 的貢獻。
DPoP 預覽支援
Keycloak 提供了對 OAuth 2.0 應用層展示所有權證明 (DPoP) 支援的預覽。感謝 Takashi Norimatsu 和 Dmitry Telegin 的貢獻。
內省端點的更多彈性
在先前的版本中,內省端點會自動傳回存取權杖中可用的大部分宣告。現在,大多數協定對應器都包含新的 Add to token introspection
開關。此新增功能提供了更大的彈性,因為內省端點可以傳回與存取權杖不同的宣告。此變更是朝向「輕量級存取權杖」支援邁出的第一步,因為存取權杖可以省略許多宣告,而內省端點仍會傳回這些宣告。從先前版本遷移時,內省端點應傳回與存取權杖傳回的相同宣告,因此遷移後預設行為應有效地相同。感謝 Shigeyuki Kabano 的貢獻。
OAuth 2.0 裝置授權授予流程的功能旗標
OAuth 2.0 裝置授權授予流程現在包含一個功能旗標,因此您可以輕鬆停用此功能。此功能預設仍為啟用狀態。感謝 Thomas Darimont 的貢獻。
驗證
通行金鑰支援
Keycloak 提供了對 通行金鑰 的預覽支援。
通行金鑰註冊和驗證是透過 WebAuthn 的功能實現的。因此,Keycloak 的使用者可以透過現有的 WebAuthn 註冊和驗證來進行通行金鑰註冊和驗證。
同步的通行金鑰和裝置綁定的通行金鑰都可用於相同裝置和跨裝置驗證。但是,通行金鑰操作的成功與否取決於使用者的環境。請確定哪些操作可以在 該環境 中成功執行。感謝 Takashi Norimatsu 的貢獻,並感謝 Thomas Darimont 在此功能的想法和測試方面提供的幫助。
WebAuthn 改進
WebAuthn 原則包含一個新欄位:Extra Origins
。它提供了與非 Web 平台(例如,原生行動應用程式)更好的互通性。感謝 Charley Wu 的貢獻。
您已登入
此版本解決了一個問題,即當使用者在多個瀏覽器標籤中開啟登入頁面並在一個瀏覽器標籤中進行驗證時,若使用者嘗試在另一個瀏覽器標籤中進行驗證,會出現訊息:您已登入
。現在已改進為在第一個標籤中驗證後,其他瀏覽器標籤會自動驗證使用者。但是,仍需要更多改進。例如,當驗證工作階段過期並在一個瀏覽器標籤中重新啟動時,其他瀏覽器標籤不會自動跟隨登入。
用於指定最大驗證時間的密碼原則
Keycloak 支援一個新的密碼原則,允許您指定在使用者無需重新驗證即可變更密碼的最大驗證期限。當此密碼原則設定為 0 時,使用者必須重新驗證才能在帳戶主控台或透過其他方式變更密碼。您也可以指定低於或高於預設值 5 分鐘的值。感謝 Thomas Darimont 的貢獻。
部署
多站點主動-被動部署的預覽支援
將 Keycloak 部署到多個獨立站點對於某些環境來說至關重要,以提供高可用性和從故障中快速恢復的能力。此版本為 Keycloak 新增了主動-被動部署的預覽支援。
為了測試和驗證可以維持負載並從故障情境中恢復的設定,已經投入了大量的工作。若要開始,請使用 高可用性指南,其中還包括將高可用性 Keycloak 部署到雲端環境的完整藍圖。
轉接器
OpenID Connect WildFly 和 JBoss EAP
適用於 WildFly 和 JBoss EAP 的 OpenID Connect 轉接器,在先前的版本中已棄用,已在此版本中移除。它已被 WildFly 中包含的 Elytron OIDC 轉接器取代,該轉接器提供了從 Keycloak 轉接器無縫遷移的能力。
SAML WildFly 和 JBoss EAP
適用於 WildFly 和 JBoss EAP 的 SAML 轉接器不再以 ZIP 下載形式分發,而是以 Galleon 功能套件分發,使其安裝更輕鬆且更無縫。
請參閱 保護應用程式指南 以取得詳細資訊。
伺服器發行
負載卸載支援
Keycloak 現在具有 http-max-queued-requests
選項,可以在高負載下正確拒絕傳入的請求。有關詳細資訊,請參閱 生產指南。
使用者設定檔
宣告式使用者設定檔在此版本中仍為預覽功能,但我們正努力將其升級為支援的功能。歡迎提供回饋。如果您發現任何問題或有任何改進的想法,歡迎建立 Github issue,最好加上 area/user-profile
標籤。也建議查看升級指南,其中包含此版本遷移的相關資訊。
群組可擴展性
對於具有許多群組和子群組的使用案例,群組搜尋的效能已獲得改善。此處進行了一些改進,允許對子群組進行分頁查找。感謝 Alice 的貢獻。
Keycloak 22.0.3
透過範本註冊或更新使用者時的安全漏洞
Keycloak 22.0.2 中引入了一個安全漏洞。我們強烈建議不要升級到 22.0.2,並且任何已在生產環境中部署 22.0.2 的使用者應立即升級到 22.0.3。
對於在 Keycloak 升級到 22.0.2 後自行註冊的使用者,其密碼並未安全儲存,並且可能會暴露給 Keycloak 管理員。這僅影響在升級推出後註冊的使用者,而不影響任何先前註冊的使用者。
任何使用預覽宣告式使用者設定檔的領域都不受此問題影響,只有使用預設使用者設定檔提供者的領域才會受到影響。
若要識別您的部署中是否有任何受影響的使用者,您可以存取資料庫並執行以下 SQL 語句來查詢。
SELECT DISTINCT U.ID, U.USERNAME, U.EMAIL, U.REALM_ID FROM USER_ENTITY U
INNER JOIN USER_ATTRIBUTE UA ON U.ID = UA.USER_ID
WHERE UA.NAME IN ('password','password-confirm')
我們建議聯繫任何受影響的使用者,並為他們新增更新密碼所需的動作。
如果存在任何受影響的使用者,我們也建議執行以下 SQL 語句,從資料庫中刪除這些屬性
DELETE FROM USER_ATTRIBUTE UA WHERE UA.NAME IN ('password','password-confirm')
如果曾在 22.0.2 版本之後備份資料庫,並且有受影響的使用者,我們建議刪除這些備份。
自訂使用者儲存提供者
如果提供者委派給 Keycloak 儲存使用者屬性,則具有自訂使用者儲存聯盟提供者的任何部署也可能受到影響,請驗證您的自訂使用者儲存以識別這是否是一個問題。
若要識別您的部署中是否有任何受影響的聯盟使用者,您可以存取資料庫並執行以下 SQL 語句來查詢。
SELECT DISTINCT USER_ID,REALM_ID,STORAGE_PROVIDER_ID FROM FED_USER_ATTRIBUTE
WHERE NAME IN ('password','password-confirm')
如果存在任何受影響的聯盟使用者,我們也建議執行以下 SQL 語句,從資料庫中刪除這些屬性
DELETE FROM FED_USER_ATTRIBUTE UA WHERE UA.NAME IN ('password','password-confirm')
如果您的自訂使用者儲存提供者自行管理屬性,您應該查看您的自訂儲存以刪除 password
和 password-confirm
屬性。
Keycloak 22.0.0
伺服器發佈
升級到 Quarkus 3.x
Keycloak 已升級到 Quarkus Java 框架的 3.2.0.Final 版本。Quarkus 3.x 繼承了推動 Java 開發的傳統,透過快速發展和使用最新技術提供最先進的使用者體驗。
升級到 Hibernate ORM 6
Keycloak 現在受益於升級到 Hibernate ORM 6.2,其中包括效能改進、更好的 SQL、現代 JDK 支援以及對現代 RDBMS 功能的支援。
新增金鑰儲存設定來源
關於 KeyStore Vault 的新聞,我們還整合了 Quarkus 最近發佈的功能,稱為 KeyStore 設定來源。這表示除了現有的設定來源(CLI 參數、環境變數和檔案)之外,您現在還可以透過儲存在 Java 金鑰儲存檔案中的設定屬性來設定您的 Keycloak 伺服器。您可以在設定指南中了解有關此功能的更多資訊。
管理控制台
已移除帳戶控制台範本變數
公開給帳戶控制台 V2 和 V3 範本的兩個變數(isEventsEnabled
和 isTotpConfigured
)未使用,並且已在此版本中移除。
如果開發人員擴展了帳戶控制台佈景主題,他或她可能會使用這些變數。因此,如果您正在擴展基本佈景主題,請確保不再使用這些變數。
自訂管理控制台訊息的變更
管理控制台(以及即將推出的新帳戶控制台)在國際化訊息的索引鍵剖析方式上與 Keycloak 的其他部分略有不同。這是因為它使用 i18next 程式庫進行國際化。因此,當在「領域設定」➡「本地化」下為管理控制台定義自訂訊息時,必須考慮 i18next 的最佳實務。具體來說,在為管理控制台定義訊息時,必須在訊息的索引鍵中指定一個命名空間。
例如,假設我們想要覆寫建立新領域時向使用者顯示的 welcome
訊息。此訊息位於 dashboard
命名空間中,與保留訊息的原始檔案名稱 (dashboard.json
) 相同。如果我們要覆寫此訊息,則必須使用命名空間作為前綴,後接訊息的索引鍵,並以冒號分隔,在此例中,它將變成 dashboard:welcome
。
JavaScript 介面卡
已移除舊版 Promise API
在此版本中,我們已從 Keycloak JS 介面卡中移除舊版的 Promise API 方法。這表示不再可能在介面卡傳回的 Promise 上呼叫 .success()
和 .error()
。
必須使用 new
運算子來實例化
在先前的版本中,當 Keycloak JS 介面卡在沒有 new
運算子的情況下建構時,我們開始主動記錄棄用警告。從此版本開始,這樣做會擲回例外狀況。這是為了與JavaScript 類別的預期行為保持一致,這將允許未來進一步重構介面卡。
管理 API
運算子
k8s.keycloak.org/v2alpha1 的變更
keycloak.status 中新增了額外的欄位,以利 Keycloak 成為可擴展的資源。此外,還新增了一些欄位,使狀態更容易解讀,例如 observedGeneration 和條件 observedGeneration 以及 lastTransitionTime 欄位。
為了符合標準的 Kubernetes 條件,條件狀態欄位已從布林值變更為字串。在 CRD 中,它將暫時表示為接受任何內容,但它只會是字串。請確保更新您對此欄位的任何用法,以預期 "True"、"False" 或 "Unknown" 的值,而不是 true 或 false。
身分代理
OpenID Connect 身分提供者中的必要宣告配置
OpenID Connect 身分提供者支援新的配置,以指定由身分提供者發行的 ID 權杖必須具有特定的宣告,否則使用者無法透過此代理進行驗證。
此選項預設為停用;啟用時,您可以指定要篩選的 JWT 權杖宣告名稱以及要比對的值(支援正規表示式格式)。
OpenID Connect 提供者支援 JWE 加密的 ID 權杖和 UserInfo 回應
OpenID Connect 提供者現在支援 Json Web Encryption (JWE),用於 ID 權杖和 UserInfo 回應。提供者使用為選定的加密演算法定義的 realm 金鑰來執行解密。
Keycloak 21.1.0
單一程式碼庫
過去,Keycloak 是在多個 GitHub 儲存庫中維護的
擁有多個儲存庫帶來了很多複雜性和繁瑣的工作。例如,對於單一變更,經常需要將多個提取請求傳送到不同的儲存庫。
為了簡化作業,我們現在已將所有內容遷移到主儲存庫。
實驗性帳戶主控台版本 3
帳戶主控台版本 3 現在作為 Keycloak 中的實驗性功能提供。此版本支援使用「使用者設定檔」功能建立的自訂欄位。如果您想試用並向我們提供一些早期意見反應,您可以按如下方式啟用它
bin/kc.sh start-dev --features=account3
Keycloak Java 基礎配接器中 Keycloak 授權服務支援的變更
作為移除已棄用配接器的一部分,Keycloak 原則強制執行器已從配接器程式碼庫中提取到獨立的相依性中
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-policy-enforcer</artifactId>
<version>21.1.0</version>
</dependency>
透過提供此相依性,我們希望能夠將原則強制執行器與您偏好的 Java 堆疊整合。
它還提供內建的支援,可讓原則強制執行器在受 Wildfly Elytron 保護的 Jakarta 應用程式中啟用。
目前,此相依性尚未 GA,因為我們仍在處理快速入門和文件。
這項工作不應影響使用已棄用配接器的現有應用程式。 = 預設提供的 Javascript 引擎
在先前的版本中,當 Keycloak 在具有 Javascript 提供者的 Java 17 上使用時,需要將 Nashorn javascript 引擎新增到發行版中。現在不再需要這樣做,因為 Nashorn javascript 引擎預設在 Keycloak 伺服器中提供。
Keycloak 21.0.0
Keycloak 使用 Micrometer 進行度量
Keycloak 提供一個可選的度量端點,該端點以 Prometheus 格式匯出度量。在此版本中,提供此資料的實作已從 SmallRye 切換到 Micrometer。由於此變更,度量已重新命名。
請參閱移轉指南以取得詳細資訊。
Keycloak 伺服器的 Java 11 支援已棄用
現在已棄用使用 Java 11 執行 Keycloak 伺服器,並計劃在 Keycloak 22 中移除。
配接器仍然支援 Java 8、Java 11 和 Java 17。但是,我們計劃在不久的將來移除對 Java 8 的支援。
SAML SP 中繼資料變更
在此版本之前,SAML SP 中繼資料包含用於簽署和加密的相同金鑰。從此版本的 Keycloak 開始,我們僅在 SP 中繼資料中包含用於加密的預定 realm 金鑰。對於每個加密金鑰描述元,我們還會指定應使用的演算法。下表顯示了支援的 XML-Enc 演算法及其與 Keycloak realm 金鑰的對應。請參閱升級指南以取得更多詳細資訊。
XML-Enc 演算法 |
Keycloak realm 金鑰演算法 |
RSA-OAEP |
|
RSA1_5 |
已移除使用者會話提供者中的已棄用方法
已從使用者會話提供者中移除數個已棄用的方法。如果尚未完成,則需要使用 Keycloak 20 發行版本的 Javadoc 中記錄的相應替代方法取代其用法。請參閱升級指南以取得更多詳細資訊。
新儲存體:IS_CLIENT_ROLE
可搜尋欄位已棄用
已棄用 RoleModel
中的 IS_CLIENT_ROLE
可搜尋欄位。應使用運算子 EXISTS
或 NOT_EXISTS
的 CLIENT_ID
可搜尋欄位取代它。請參閱 Keycloak 21 的 JavaDoc 以取得更多詳細資訊。
FIPS 140-2 預覽支援
Keycloak 中的 FIPS 140-2 支援在先前的版本中為實驗性,現在已升級為預覽版。為建立此預覽版本進行了許多修正和改進。如需詳細資訊,請參閱FIPS 文件。歡迎提供意見反應!
再次感謝 David Anderson、Sudeep Das 和 Isaac Jensen 在此功能上的巨大協助。
當在反向 Proxy 後方執行時,支援標準的 Forwarded
標頭
除了識別非標準的 X-Forwarded-*
以提取 Proxy 新增的資訊(如果 Proxy 伺服器參與請求路徑,這些資訊可能會被變更或遺失)之外,Keycloak 現在還可以利用標準的 Forwarded
標頭來達到相同的目的。
如需更多詳細資訊,請參閱使用反向 Proxy 指南。
請確保您的 Proxy 在向 Keycloak 節點發出請求時也會覆寫 Forwarded
標頭。
容器映像現在基於 ubi9-micro
為了提高安全性,Keycloak 容器映像已進行兩方面的修改:首先,它現在基於 UBI9 而不是 UBI8。其次,我們已切換到 -micro
,而之前使用的是 -minimal
。
變更至 UBI9 對大多數使用者不會有任何影響。在極少數情況下,可能會出現 glibc 錯誤 CPU 不支援 x86-64-v2。x86-64-v2
自 2009 年起已在處理器上提供。當您的虛擬化環境配置錯誤時,最有可能遇到此問題。
從 -minimal
變更為 -micro
具有較大的潛在影響。對映像檔進行簡單客製化的使用者不會注意到任何差異,但是任何安裝 RPM 的使用者都需要變更其執行方式。《在容器中執行 Keycloak》指南已更新,向您展示如何操作。
由於這些變更,影響 Keycloak 容器映像檔的已知 CVE 減少了 82%!
其他改進
-
可選擇停用用戶端註冊存取權杖輪換。感謝 Réda Housni Alaoui。
Keycloak 20.0.0
已移除 WildFly 發行版本
在 Keycloak 17.0.0 中,基於 Quarkus 的新 Keycloak 發行版本已推出,而基於 WildFly 的發行版本則已棄用。在此版本中,已移除 WildFly 發行版本,且不再支援。
如果您仍在使用 WildFly 發行版本,我們強烈建議您盡快遷移到 Quarkus 發行版本,請參閱遷移指南以了解更多詳細資訊。
新的 Keycloak Operator 升級
我們很高興宣布,基於 Quarkus 發行版本的新 Keycloak Operator 不再是預覽功能。我們新增了新功能以及一些改進,其中一些導致了重大變更。
Realm Operator
由於新的 Operator 目前缺少一些 CR(例如,Client 和 User),我們正在引入一種臨時解決方案,即 Realm Operator。請參閱其 GitHub 儲存庫以了解更多詳細資訊。另請參閱「Keycloak Operator CR 的未來」部落格文章。
支援的 OpenJDK 版本
Keycloak 現在同時支援伺服器和轉接器的 OpenJDK 17。
隨著基於 WildFly 的發行版本的移除,不再支援在 OpenJDK 8 上執行 Keycloak 伺服器。我們也計劃在 Keycloak 21 中移除對 OpenJDK 8 上 Keycloak 轉接器的支援。
從 Keycloak 22 開始,我們計劃僅支援最新的 OpenJDK LTS 發行版本,並致力於快速支援最新的 OpenJDK 發行版本。這表示我們也將在 Keycloak 22 中移除對 Keycloak 伺服器的 OpenJDK 11 支援。
主機名稱提供者現在支援設定完整的基本 URL
在此版本中,我們引入了兩個額外的伺服器選項,以設定前端請求和管理控制台的基本 URL
-
hostname-url
-
hostname-admin-url
更多詳細資訊請參閱《設定主機名稱》指南。
嵌入式 H2 資料庫升級
Keycloak 為開發目的而提供 H2 資料庫驅動程式。由於其僅用於開發目的,因此絕不應在生產環境中使用。
在此版本中,H2 驅動程式已從 1.x 版本升級到 2.x 版本。
用於託管 Keycloak JavaScript 轉接器的功能保護
應用程式可以從 Keycloak 伺服器直接載入 keycloak.js
。由於以這種方式載入 JavaScript 程式庫不被視為最佳做法,因此現在有一個功能保護,允許停用此功能。
在 Keycloak 21 中,我們將棄用此選項,並且在 Keycloak 22 中,我們計劃完全移除從 Keycloak 伺服器載入 keycloak.js
的功能。
OTP 應用程式 SPI
在先前的版本中,向使用者顯示的 OTP 應用程式清單在 Keycloak 中是硬式編碼的。隨著 OTP 應用程式 SPI 的引入,現在可以停用內建的 OTP 應用程式,以及新增自訂的 OTP 應用程式。
自訂身分提供者現在可以為提供者設定圖示
自訂身分提供者現在可以設定在登入頁面上使用的圖示。感謝 Klaus Betz,他恰好也維護 Keycloak 的擴充功能,以支援使用 AppleID 登入。
FIPS 140-2 實驗性支援
現在有將 Keycloak 部署到已啟用 FIPS 140-2 的環境的實驗性支援。在發布後不久將會有一篇部落格文章,詳細說明如何嘗試。歡迎提供意見!
感謝 David Anderson,他貢獻了此功能的部分內容。此外,感謝 Sudeep Das 和 Isaac Jensen 最初的原型工作,該工作被用作靈感。
依屬性搜尋群組
現在可以透過管理 REST API 依屬性搜尋群組。感謝 Alice 的貢獻。
在帳戶控制台中檢視群組成員資格
現在可以允許使用者在帳戶控制台中檢視其群組成員資格。感謝 cgeorgilakis 的貢獻。
已移除資料提供者和模型中已棄用的方法
已從資料提供者和模型中移除數個已棄用的方法。如果尚未完成,則需要將其用法替換為 Keycloak 19 版本 Javadoc 中記載的相應替換。請參閱《升級指南》以了解更多詳細資訊。
Keycloak 19.0.0
OpenID Connect 和 SAML 轉接器生命週期結束
某些 Keycloak OpenID Connect 轉接器已達到生命週期結束,並且未包含在此版本中。
Fuse 6 和 7 (OpenID Connect)
Keycloak 將不再為 Fuse 6 或 7 提供轉接器。如果您需要 Fuse 的轉接器,請利用 Red Hat Single Sign-On 7.x 轉接器。
JBoss AS 7 和 EAP 6 (OpenID Connect 和 SAML)
JBoss AS 7 已長時間未維護。如果您仍在使用 JBoss AS 7,我們建議您遷移到 WildFly 並利用 WildFly 中的原生 OIDC 支援。
使用 Red Hat JBoss Enterprise Application Platform 6.x 的 Red Hat 客戶應使用 Red Hat Single Sign-On 7.x 轉接器。這些可以與 Keycloak 伺服器結合使用。
Jetty 9.2 和 9.3 (OpenID Connect 和 SAML)
Jetty 9.2 在 2018 年達到生命週期結束,而 Jetty 9.3 在 2020 年達到生命週期結束。如果您仍在使用這些版本,我們建議您盡快升級到 Jetty 9.4。
Spring Boot 1 (OpenID Connect)
Spring Boot 1.x 在 2019 年達到生命週期結束。如果您仍在使用 Spring Boot 1,我們建議您盡快升級到 Spring Boot 2。
WildFly 舊版安全性層 (OpenID Connect 和 SAML)
在 WildFly 25 中,已移除舊版安全性層,未來將僅支援 Elytron。我們建議任何使用舊版 WildFly 的使用者升級並利用 WildFly 中的原生 OIDC 支援。
使用 Red Hat JBoss Enterprise Application Platform 7.x 的 Red Hat 客戶應使用 Red Hat Single Sign-On 7.x 轉接器。這些可以與 Keycloak 伺服器結合使用。
Keycloak 儲存中的變更
Keycloak 儲存正在變更,目前的儲存雖然仍受支援,但最終將被全新的實作取代。此變更為雲端原生儲存帶來更好的支援、無停機能力,以及為使用者以外的其他區域實作自訂儲存的更好支援。
這表示目前儲存支援的功能中,數個深度變更將成為舊版功能。舊版儲存和新儲存無法同時使用;一次只能啟用一個儲存。
最明顯的變更是使用者儲存 SPI 與新的儲存 API(地圖儲存 API)不相容。因此,使用者儲存 SPI 將會隨著舊版儲存而棄用,並會移至一個稱為 keycloak-model-legacy
的獨立模組。此變更會影響數個區域,尤其是與使用者聯盟和自訂使用者提供者相關的區域。
此外,API 已整合,以便儲存層的詳細資訊對 REST 服務層透明。具體而言,服務將無法區分快取和非快取物件,也無法特別存取聯合儲存與本機儲存。
因此,必須檢閱透過 KeycloakSession
方法存取本機儲存或快取中的物件的自訂擴充功能。請參閱《升級指南》以了解詳細資訊。
OIDC 登出變更
在上一個版本中,我們新增了對 OIDC 登出的支援。此版本包含其他一些修正和調整。重點包括
-
支援
client_id
參數,該參數已新增至最近的 OIDC RP 起始登出規格草案。因此,無需使用用戶端的需要同意
旗標來顯示登出確認畫面。 -
為 OIDC 用戶端新增了設定選項
有效的登出後重新導向 URI
。此變更與 OIDC 規格一致,該規格允許您為登入後和登出後的重新導向使用不同的重新導向 URI 集合。用於有效的登出後重新導向 URI
的值+
表示登出將使用與有效的重新導向 URI
選項指定的相同的重新導向 URI 集合。此變更也符合從先前版本遷移時的預設行為,以實現回溯相容性。
如需更多詳細資訊,請參閱《伺服器管理指南》。
更新電子郵件工作流程
新增了預覽功能 UPDATE_EMAIL
。啟用此功能並在領域中啟用對應的旗標後,使用者必須點擊傳送到他們新電子郵件地址的連結,以確認更新其電子郵件。更多詳細資訊,請參閱伺服器管理指南。感謝 Réda Housni Alaoui 的貢獻。
舊版 Keycloak Operator 中已棄用的 podDisruptionBudget
在此版本中,我們已棄用舊版 Keycloak Operator 的 Keycloak CR 中的 podDisruptionBudget
欄位。當 Operator 部署在 Kubernetes 1.25 或更高版本上時,此選用欄位將被忽略。
作為一種解決方案,您可以在叢集中手動建立 Pod 擾動預算,例如
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
labels:
app: keycloak
name: keycloak
spec:
maxUnavailable: 1
selector:
matchLabels:
component: keycloak
另請參閱Kubernetes 文件。
集中式日誌記錄的初始支援
從 19 版開始,Keycloak 支援使用 GELF 將日誌發送到集中式日誌解決方案,例如開箱即用的 ELK、EFK 或 Graylog。
您可以在日誌記錄指南中找到相關文件和範例,以協助您快速上手。
Keycloak 18.0.0
新 Operator 預覽
在此版本中,我們將推出一個全新的 Keycloak Operator 作為預覽。除了從頭開始重寫之外,與舊版 Operator 相比,主要面向使用者的變更在於使用的 Keycloak 發行版本 – 新 Operator 使用 Keycloak 的 Quarkus 發行版本。因此,API(以自訂資源定義的形式)已變更。有關詳細資訊,包括安裝和移轉說明,請參閱與 Operator 相關的指南。
在 Keycloak WildFly 發行版本達到 EOL 之前,舊版 Operator 將會收到更新,直到 Keycloak 20 版本。
新管理控制台預覽
新的管理控制台現在已升級為預覽版,計畫在 Keycloak 19 中成為預設的管理控制台。
如果您發現新控制台有任何問題,或有任何改進建議,請透過GitHub Discussions告訴我們。
逐步驗證
Keycloak 現在支援逐步驗證。此功能已在 Keycloak 17 中新增,並在此版本中進一步完善。
更多詳細資訊,請參閱伺服器管理指南。
感謝 Cornelia Lahnsteiner 和 Georg Romstorfer 的貢獻。
用戶端密碼輪換
Keycloak 現在支援透過客戶策略進行用戶端密碼輪換。此功能目前以預覽功能的形式提供,允許為機密用戶端提供領域策略,使其可以同時使用最多兩個密碼。
更多詳細資訊,請參閱伺服器管理指南。
OpenID Connect 登出改進
進行了一些修正和改進,以確保 Keycloak 現在完全符合所有 OpenID Connect 登出規範
-
OpenID Connect RP 發起的登出 1.0
-
OpenID Connect 前端通道登出 1.0
-
OpenID Connect 後端通道登出 1.0
-
OpenID Connect 工作階段管理 1.0
更多詳細資訊,請參閱伺服器管理指南。
WebAuthn 改進
Keycloak 現在支援無 ID 的 WebAuthn 驗證。此功能允許 WebAuthn 安全金鑰在驗證期間識別使用者,只要安全金鑰支援常駐金鑰即可。更多詳細資訊,請參閱伺服器管理指南。感謝 Joaquim Fellmann 的貢獻。
除了上述改進之外,還有更多 WebAuthn 的改進和修正。
已移除已棄用的 upload-script
功能
upload-script
功能已被標記為已棄用很長一段時間。在此版本中,它已完全移除,不再受支援。
如果您正在使用任何這些功能
-
OpenID Connect 指令碼對應器
-
指令碼驗證器(驗證執行)
-
JavaScript 策略
您應該考慮閱讀此文件,以了解如何繼續依賴這些功能,但將您的指令碼部署到伺服器,而不是透過管理介面管理它們。
預設停用 SAML ECP 設定檔
為了降低濫用 SAML ECP 設定檔的風險,Keycloak 現在會封鎖所有未明確允許此流程的 SAML 用戶端。可以使用用戶端組態中的「允許 ECP 流程」旗標來啟用該設定檔,請參閱伺服器管理指南。
Quarkus 發行版本
啟動時匯入領域
Keycloak Quarkus 發行版本現在支援在啟動時直接匯入您的領域。有關更多資訊,請查看對應的指南。
其他改進
-
帳戶控制台與最新的 PatternFly 版本對齊。
-
支援加密的使用者資訊端點回應。感謝 Giacomo Altiero
-
支援用於加密金鑰的演算法 RSA-OAEP with A256GCM。感謝 Filipe Bojikian Rissi
-
支援使用 GitHub Enterprise 伺服器登入。感謝 Neon Ngo
Keycloak 17.0.0
重點
現在完全支援 Quarkus 發行版本
預設 Keycloak 發行版本現在基於 Quarkus。新的發行版本更快、更精簡,而且更容易設定!
我們理解從 WildFly 發行版本移轉對所有人來說並非易事,因為您啟動和設定 Keycloak 的方式已發生根本性的變化。考慮到這一點,我們將繼續支援 WildFly 發行版本,直到 2022 年 6 月。
有關如何移轉到新發行版本的資訊,請查看Quarkus 移轉指南。
Quarkus 發行版本更新
我們投入大量精力來完善和改進 Quarkus 發行版本,使其盡可能提供良好的體驗。以下是一些重點
-
以伺服器指南的形式提供新的文件方法,以協助您安裝和設定 Keycloak
-
將 Quarkus 升級到 2.7.0.Final
-
組態檔不再是 Java 特定的,並且使組態金鑰與 CLI 引數對齊
-
清楚區分
建置選項
和執行時間組態
。 -
h2-mem
和h2-file
資料庫重新命名為dev-mem
和dev-file
。 -
簡化了啟用和停用功能
-
透過
conf/quarkus.properties
完成自訂且不受支援的 Quarkus 組態。 -
能夠透過 JAVA_OPTS_APPEND 新增自訂 Java 選項(感謝 dasniko)
-
初始記錄功能
-
初始支援跨資料中心
-
不再支援使用者定義的設定檔,但可以使用不同的組態檔來實現相同的目標
-
快速入門已更新為使用新的發行版本
Keycloak 16.1.0
重點
升級到 Wildfly 26.0.0
Keycloak 伺服器已升級為使用 Wildfly 26.0.0.Final 作為底層容器。
有關 WildFly 26 的更多資訊,請參閱WildFly 26 版本說明。
Keycloak 16.0.0
重點
升級到 Wildfly 25.0.1
Keycloak 伺服器已升級為使用 Wildfly 25.0.1.Final 作為底層容器。
WildFly 25 放棄了對舊版安全子系統的支援,該子系統將完全由 Elytron 取代。這需要對 Keycloak 的設定方式進行重大變更。請參閱移轉指南以取得更多詳細資訊。
有關 WildFly 25 的更多資訊,請參閱WildFly 25 版本說明。
Keycloak 15.1.0
重點
Quarkus 發行版本預覽
毫無疑問,此版本最大的重點是對 Quarkus 發行版本所做的所有改進。事實上,它們太多了,很難一一列舉。
CLI 工具經過多次完善,我們相信它現在提供了一個非常簡單且方便的方法來配置和運行 Keycloak。它幾乎簡單到不需要任何文件說明。
要開始使用,只需解壓縮發行版,然後輸入 bin/kc.[sh|bat] -h
來探索它的強大功能!
這並不表示我們不打算為配置 Keycloak 提供文件說明,只是這次沒有來得及。在缺乏文件說明的情況下,預計發布後會有一篇部落格文章,介紹 Quarkus 發行版的所有變更,以及如何使用它的概述。
我們正快速朝向將 Quarkus 發行版設為預設發行版的方向邁進,並且很快將棄用 WildFly 發行版。考慮到這一點,盡可能讓更多人試用它並向我們提供回饋非常重要,如果您發現任何可用性問題、無法使用它配置某些東西,或發現任何錯誤,請告訴我們。
我們很樂意聽取您的想法,並在 GitHub Discussions 中獲得您的回饋!
WildFly 更新
從 WildFly 23 升級到 WildFly 25 花費的時間比我們預期的要長得多。我們仍在努力處理這個問題,並希望盡快發布升級後的 Keycloak 16,但由於我們希望將 Quarkus 發行版的更新發布出去,因此我們在此期間進行了此發布。
WildFly 轉接器棄用
在 WildFly 25 中,現在有出色的原生 OpenID Connect 支援,不需要 Keycloak 轉接器。考慮到這一點,我們正在棄用我們的 WildFly 轉接器,並且將不支援 WildFly 25,但它將會在一段時間內繼續支援舊版本的 WildFly 和 Red Hat JBoss Enterprise Application Platform 7.y。
Spring Security 和 Boot 轉接器棄用
很久以前,隨著 Spring Security 5.0 的發布,Spring 現在原生支援 OAuth 2.0 和 OpenID Connect。考慮到這一點,現在是開始棄用我們的 Spring Boot 和 Security 轉接器的時候了。
OpenID Connect 前端通道登出支援
Keycloak 現在支援 OpenID Connect 前端通道登出 1.0。
有關更多詳細資訊,請參閱伺服器管理指南。
感謝 Ronaldo Yamada 的貢獻。
Keycloak 15.0.1
重點
此版本包含一些重要的錯誤修正。此外,我們要感謝 Leandro José de Bortoli 對 FAPI 相關功能的貢獻,例如 JARM 支援和 CIBA 的改進。
Keycloak 15.0.0
重點
金融級 API (FAPI) 改進、FAPI CIBA 和巴西開放銀行
Keycloak 伺服器改進了對金融級 API (FAPI) 的支援。更具體地說,Keycloak 現在符合 FAPI CIBA 和巴西開放銀行的規範。我們也支援 CIBA ping 模式。感謝 Takashi Norimatsu 完成 FAPI CIBA 的大部分工作,並且他持續為 Keycloak 專案做出非常出色的貢獻。還要感謝 Dmytro Mishchuk、Andrii Murashkin、Hryhorii Hevorkian 和 Leandro José de Bortoli 在 FAPI 合規性方面做了大量工作。最後,感謝 FAPI 特殊興趣小組的所有成員的幫助和回饋。
Keycloak 14.0.0
重點
用戶端原則和金融級 API (FAPI) 支援
Keycloak 伺服器現在正式支援用戶端原則和金融級 API (FAPI)。此功能在較早的版本中進行了預覽,但現在它更加完善,並且有適當的文件說明。感謝 Takashi Norimatsu 完成這項工作的大部分。還要感謝 Dmytro Mishchuk、Andrii Murashkin 和 Hryhorii Hevorkian 也在此功能的開發方面做了大量工作。最後,感謝 FAPI 特殊興趣小組的所有成員的幫助和回饋。
使用者設定檔 SPI 的改進和對宣告式設定的支援
在此版本中,使用者設定檔 SPI 有多項改進,以便為 Keycloak 中管理使用者設定檔的方式做好準備。
其中一項改進是支援透過管理控制台配置使用者設定檔。如需更多詳細資訊,請參閱伺服器管理指南
感謝社群和所有參與此工作的個人。
離線工作階段的改進
由於 Peter Flintholm 的努力,離線工作階段預先載入功能得到了改進,速度應該會更快。
由於 Thomas Darimont 的努力,作為預覽功能,可以跳過離線工作階段預先載入,改為延遲載入。此功能必須在伺服器設定中明確啟用,有關詳細資訊,請參閱伺服器管理指南。
Keycloak 13.0.0
重點
OAuth 2.0 裝置授權許可 (RFC 8628)
現在可以使用 OAuth 2.0 裝置授權許可。
感謝 Hiroyuki Wada、Łukasz Dywicki 和 Michito Okai。
OpenID Connect 用戶端啟動的回溯通道驗證 (CIBA)
現在可以使用 OpenID Connect 用戶端啟動的回溯通道驗證 (CIBA)。
感謝 Takashi Norimatsu、Andrii Murashkin、Christophe Lannoy 和 FAPI WG 的成員的實作和回饋。
伺服器到用戶端通訊中的 SAML 成品繫結
Keycloak 現在支援使用 SAML成品繫結與用戶端進行通訊。用戶端設定中引入了一個新的 Force Artifact Binding
選項,該選項會強制使用成品訊息與用戶端進行通訊。如需更多詳細資訊,請參閱伺服器管理指南。請注意,在此版本中,Keycloak SAML 用戶端轉接器不支援成品繫結。
感謝 AlistairDoswald 和 harture。
Keycloak 12.0.0
重點
Keycloak.X 發行版預覽
介紹新的即將推出的 Keycloak.X 發行版的預覽版。此發行版由 Quarkus 提供支援,可大幅提高啟動時間和記憶體消耗,並使配置 Keycloak 更加容易。
新的帳戶控制台現在是預設值
新的帳戶控制台不再是預覽功能,現在是 Keycloak 中的預設帳戶控制台。舊的帳戶控制台將繼續保留一段時間。對於那些擁有舊帳戶控制台自訂主題的人,預設會使用舊控制台,讓您有時間將您的自訂主題更新到新的帳戶控制台。
OpenID Connect 回溯通道登出
感謝 DaSmoo 和 benjamin37,現在可以使用 OpenID Connect 回溯通道登出。
FAPI RW 支援與用戶端政策的初始支援
為了支援金融級 API 讀取和寫入 API 安全性設定檔 (FAPI RW),做了許多工作。這可透過使用用戶端政策來實現,目前仍處於預覽狀態。您可以在下個版本中看到更多完善。感謝 Takashi Norimatsu 和 FAPI 特別興趣小組的所有成員。
將登入主題升級至 PatternFly 4
Keycloak 登入主題元件已升級至 PatternFly 4。舊的 PatternFly 3 與新的版本同時執行,因此有可能在那裡擁有 PF3 元件。
登入主題的設計也進行了變更,以提供更好的使用者體驗。您甚至可以為自訂的身分提供者定義圖示。詳細資訊,請參閱文件。
Gatekeeper 終止生命週期
Gatekeeper 在 21 年 11 月已終止生命週期。這表示我們不再支援或更新它。公告請見這裡。
其他改進
-
支援 OAuth2 用戶端憑證授權,無需重新整理權杖且無需使用者工作階段。感謝 Thomas Darimont
-
支援將存取權杖傳送至 OAuth2 撤銷端點
Keycloak 11.0.0
重點
LDAP 群組對應器的命名空間支援
LDAP 群組對應器的命名空間支援,可讓您將 LDAP 中的群組對應至 Keycloak 群組樹狀結構的指定分支 (命名空間) 下。先前,LDAP 中的群組一律會新增為 Keycloak 中的最上層群組。
升級至 WildFly 20
Keycloak 伺服器已升級,在底層使用 WildFly 20.0.1.Final。如需詳細資訊,請參閱升級指南。
SAML POST 繫結在最新版本的瀏覽器中已損毀
JSESSIONID
Cookie 的 SameSite
值 None
對於 Keycloak SAML 配接器的正確運作是必要的。當使用 SAML POST 繫結時,使用不同的值會導致每次對 Keycloak 發出請求時,都重設容器的工作階段。請參閱以下適用於 WildFly 和 EAP 的 Keycloak SAML Galleon 功能套件指南的步驟,以保持正確的行為。請注意,此因應措施也應該適用於先前版本的配接器。
其他改進
-
支援用戶端離線工作階段生命週期。感謝 Yoshiyuki Tabata
-
捷克語翻譯。感謝 Jakub Knejzlík
-
可以從 Facebook 身分提供者擷取其他欄位。感謝 Bartosz Siemieńczuk
-
支援用於簽署和加密 ID 權杖的 AES 192 和 AES 256 演算法。感謝 Takashi Norimatsu
-
能夠在簽署的 JWT 用戶端驗證中指定簽章演算法。感謝 Takashi Norimatsu
Keycloak 10.0.0
重點
適用於 OpenID Connect / OAuth 2.0 的用戶端工作階段逾時
通常,SSO 工作階段會持續數天甚至數個月,而個別的用戶端工作階段最好應該短得多。透過導入用戶端工作階段逾時,現在可以為個別用戶端設定獨立的逾時,以及領域內所有用戶端的預設逾時。
Keycloak 9.0.1
Keycloak 9.0.0
重點
用戶端的分頁支援
已在管理控制台和 REST API 中將分頁支援新增至用戶端。感謝 saibot94。
新的 Elytron 認證儲存庫保管庫提供者
已將一個新的內建保管庫提供者新增為 WildFly 擴充功能,該提供者會從金鑰儲存庫支援的 Elytron 認證儲存庫讀取祕密。認證儲存庫的建立和管理由 Elytron 使用 elytron
子系統或 elytron-tool.sh
指令碼來處理。
Keycloak 8.0.0
重點
新的預設主機名稱提供者
固定和請求主機名稱提供者已替換為單一新的預設主機名稱提供者。此提供者具有多項改進,包括
-
無需變更提供者即可設定固定的基本 URL
-
支援前端和後端請求的不同基本 URL
-
在透過反向 Proxy 以不同內容路徑公開 Keycloak 的情況下,支援變更內容路徑
主題資源中的訊息
主題資源中的訊息組合可啟用自訂提供者 (例如驗證器) 的國際化。它們也在所有主題類型之間共用,因此可以共用例如登入和帳戶主控台之間的訊息。感謝 micedre。
適用於 SAML 配接器的 RoleMappingsProvider SPI
我們新增了一個新的 SPI,允許配置自訂角色映射器,SAML 适配器會使用這些映射器將從 SAML 斷言中提取的角色映射到 SP 應用環境中存在的角色。當适配器需要與第三方 IDP 通訊,且 IDP 在斷言中設定的角色與 SP 應用程式定義的角色不符時,這特別有用。要使用的提供者可以在 keycloak-saml.xml
檔案或 keycloak-saml
子系統中進行設定。此外,我們也提供了一個基於屬性檔案內容執行角色映射的實作。
請注意,當 Keycloak 作為 IDP 時,我們可以利用內建的角色映射器,在將角色設定到斷言之前執行任何必要的映射,因此在這種情況下,此 SPI 可能會是多餘的。RoleMappingsProvider
SPI 的設計目的是用於 IDP 無法在將角色新增至斷言之前進行映射的情況。
W3C Web 身份驗證支援
在此版本中,我們加入了對 W3C Web 身份驗證 (WebAuthn) 的初步支援。目前實作存在一些限制,但我們正在努力改進這個領域。感謝 tnorimat 的貢獻。也感謝 ynojima 的幫助和回饋。
支援無密碼驗證、多因素驗證和每位使用者多個憑證
隨著 W3C Web 身份驗證支援的到來,我們改進了身份驗證流程系統,以便讓使用者能夠選擇首選的登入驗證方法(例如,在 OTP 憑證和 WebAuthn 憑證之間選擇)。新的機制也允許管理員為無密碼登入設計流程,例如僅使用 WebAuthn 作為身份驗證方法。請注意,隨著這些變更,您建立的任何自訂身份驗證流程可能需要適應新的流程邏輯。
由於這些變更,使用者現在可以擁有多個 OTP 裝置和多個 WebAuthn 裝置。允許使用者在登入期間選擇要使用的裝置類型的相同系統,也允許該使用者選擇要使用的特定裝置。感謝 Cloudtrust 團隊:AlistairDoswald、sispeo 和 Fratt 的貢獻,以及 harture 和 Laurent 的幫助。
其他改進
theme.properties 中支援系統屬性和環境變數
現在可以在 theme.properties 檔案中使用系統屬性和環境變數。感謝 Opa-
支援使用簽署的 JWT 進行客戶端身份驗證的更多簽署演算法
感謝 tnorimat,我們支援使用簽署的 JWT 進行客戶端身份驗證的更多簽署演算法。
支援啟用/停用 JavaScript 适配器的日誌記錄
感謝 jonkoops,現在可以啟用或停用 JS 适配器的日誌記錄。
從 JavaScript 适配器中移除憑證支援
已移除在 JavaScript 适配器中提供客戶端憑證的選項。感謝 jonkoops
Gatekeeper 的更新
-
安全令牌和登出端點已包含在 Gatekeeper 中。感謝 fredbi
-
Gatekeeper 存在一個錯誤,導致 Cookie 應用於子網域。感謝 daniel-ac-martin,此問題已解決
-
現在 Gatekeeper 提供對 Same-site Cookie 的支援。感謝 fiji-flo
將腳本部署到伺服器
請參閱 7.0.1 版本說明,瞭解有關如何部署和執行腳本以自訂特定行為的更多詳細資訊。
Keycloak 7.0.1
將腳本部署到伺服器
到目前為止,管理員可以透過 Keycloak 管理控制台以及 RESTful 管理 API 將腳本上傳到伺服器。
從現在開始,此功能預設為停用,使用者應優先選擇直接將腳本部署到伺服器。有關更多詳細資訊,請參閱 JavaScript 提供者。
Keycloak 7.0.0
重點
簽署和加密的 ID 令牌支援
Keycloak 可以根據 Json Web Encryption (JWE) 規範支援簽署和加密的 ID 令牌。感謝 tnorimat。
其他改進
-
JavaScript 适配器中新增了 PKCE 支援。感謝 thomasdarimont
-
Keycloak 容器映像中新增了 Oracle 資料庫支援。感謝 nerdstep
-
SAML 适配器中新增了時鐘偏差支援。感謝 steevebtib
-
Node.js 适配器的 TypeScript 支援。感謝 evanshortiss
-
Gatekeeper 現在允許在標頭中提供未加密的令牌,同時在 Cookie 中加密。當 Keycloak 伺服器上啟用
Revoke Refresh Token
時,Gatekeeper 也存在一個錯誤。此問題已解決。感謝 fredbi -
管理控制台中的新索引標籤,用於顯示客戶端角色的使用者清單。感謝 unly
Keycloak 6.0.0
PS256 支援
感謝 tnorimat,Keycloak 現在支援使用 PS256 簽署和驗證令牌。
Keycloak 4.8.0.Final
OpenShift 整合
現在可以使用 Keycloak 完全保護 OpenShift 3.11,包括能夠自動將服務帳戶作為 OAuth 用戶端公開為 Keycloak 的用戶端。
這目前是一項技術預覽功能。
規則/Drools 策略標記為技術預覽功能
到目前為止,預設啟用 Drools 策略。但現在,此策略類型僅作為技術預覽功能提供,要使用它,您需要啟用預覽設定檔或相應的功能。請參閱 授權服務指南,瞭解更多詳細資訊。
Keycloak 4.6.0.Final
Keycloak Gatekeeper
Keycloak Gatekeeper 提供了一個安全 Proxy,可用於保護應用程式和服務,而無需适配器。它可以與您的應用程式一起在本機安裝,或作為 OpenShift 或 Kubernetes 上的 Sidecar 安裝。
非常感謝 gambol99 為 Keycloak 貢獻此工作。
Keycloak 4.5.0.Final
新的簽名演算法
除了簽章 SPI 之外,現在也支援其他簽章演算法。
Keycloak 現在支援 RS256、RS384、RS512、ES256、ES384、ES512、HS256、HS384 和 HS512。
橢圓曲線數位簽章演算法 (ES256/384/512) 非常有趣,因為它們提供與 RSA 簽章相似的安全性特性,但使用的 CPU 資源明顯較少。
當您不希望應用程式本身驗證簽章時,HMAC (HS256/384/512) 也非常有用。由於這些是對稱簽章,只有 Keycloak 才能驗證簽章,這要求應用程式使用令牌內省端點來驗證令牌。
感謝 tnorimat 為此工作貢獻了重要部分。
小改進
-
新增 LocaleSelector SPI,允許變更特定請求解析地區設定的方式。感謝 knutz3n
-
新增驗證器,以便在首次 Idp 驗證後,自動將身分識別提供者的身分連結到現有帳戶。感謝 slominskir
Keycloak 4.4.0.Final
升級至 WildFly 13
Keycloak 伺服器已升級為在底層使用 WildFly 13。這意味著底層相依性的更新,以及組態中的一些變更。我們現在也支援 WildFly 13 配接器,並且針對跨資料中心設定升級了底層 JDG/Infinispan 伺服器版本。詳情請參閱升級指南。
小改進
-
更新歡迎頁面的設計
-
允許將目前的地區設定傳遞給 OAuth2 IdP。感謝 knutz3n
-
支援「僅報告」內容安全策略 (Content-Security-Policy-Report-Only) 安全標頭。感謝 knutz3n
-
用於 SAML 的指令碼型 ProtocolMapper。感謝 AlistairDoswald
Keycloak 4.3.0.Final
主機名稱 SPI
主機名稱 SPI 引入了更彈性的方式來設定 Keycloak 的主機名稱。有兩個內建的供應商。第一個是請求,它使用請求標頭來確定主機名稱。第二個是固定,它允許設定固定的主機名稱。後者確保只能使用有效的主機名稱,也允許內部應用程式透過替代 URL 呼叫 Keycloak。
如需更多詳細資訊,請參閱伺服器管理指南中的威脅緩解章節。
授權服務的效能改進
在此版本中,我們全面改進了原則評估效能,提高了可靠性和吞吐量。我們進行的主要變更與試圖透過避免不必要的流程並在決策發生時立即收集決策來最佳化原則評估路徑有關。我們還在每個請求的基礎上引入了原則決策快取,避免了先前評估過的原則的冗餘決策。
我們也正在開發其他快取層,這應該會提供更好的體驗。請參閱KEYCLOAK-7952。
從伺服器取得權限時選擇回應模式
在先前的版本中,權限總是使用標準 OAuth2 回應從伺服器傳回,其中包含存取和重新整理令牌。在此版本中,用戶端可以使用 response_mode
參數來指定伺服器應如何回應授權請求。此參數接受兩個值
-
decision
表示回應應僅包含一個標誌,指示伺服器是否已授予權限。否則,將傳回
403
HTTP 狀態代碼。 -
permissions
表示回應應包含伺服器使用 JSON 格式授予的每個權限。
NodeJS 原則執行器
適用於 NodeJS 的配接器 keycloak-nodejs-connect 現在支援根據伺服器採取的決策來保護資源的建構。新的建構允許使用者使用細緻的權限來保護其資源,如下所示
app.get('/protected/resource', keycloak.enforcer('resource:view'), function (req, res) {
res.json({message: 'access granted'});
});
支援 Google 登入的託管網域
使用 Google 登入現在支援 hd
參數,以將 Google 登入限制為 Google 的特定託管網域。當在身分識別提供者中指定此參數時,會拒絕來自其他網域的任何登入。
感謝 brushmate 的貢獻。
Keycloak 4.2.0.Final
Cordova 的瀏覽器索引標籤支援
我們現在支援在 Cordova 的 JavaScript 配接器中使用瀏覽器索引標籤和通用連結。這可啟用多個應用程式之間的 SSO,並提高安全性。
感謝 gtudan 的貢獻。
Keycloak 4.0.0.Final
用戶端範圍和 OAuth 2 範圍參數的支援
我們新增了對用戶端範圍的支援,這取代了用戶端範本。用戶端範圍是一種更彈性的方法,並且也為 OAuth scope
參數提供了更好的支援。
同意畫面中與用戶端範圍相關的變更。同意畫面上的清單現在連結到用戶端範圍,而不是協定對應器和角色。
如需更多詳細資訊,請參閱文件和移轉指南。
OAuth 2 憑證繫結存取令牌
我們現在已部分實作 OAuth 2.0 相互 TLS 用戶端驗證和憑證繫結存取令牌 規格。更準確地說,我們支援憑證繫結存取令牌。如果您的機密用戶端能夠使用雙向 SSL,Keycloak 將能夠將用戶端憑證的雜湊新增到為該用戶端發出的令牌中。目前,只有 Keycloak 本身會驗證令牌雜湊(例如在 refresh token
請求期間)。我們計劃也新增對配接器的支援。我們還計劃新增對相互 TLS 用戶端驗證的支援。
感謝 tnorimat 的貢獻。
授權服務
UMA 2.0 支援
授權服務現在支援 UMA 2.0。如果您是從舊版 Keycloak 遷移而來,請查看文件以取得更多詳細資訊。
推送宣告
用戶端應用程式現在能夠連同授權請求一起將任意宣告傳送給 Keycloak,以便根據這些宣告評估權限。當需要在特定交易的範圍內或基於執行階段的資訊授予(或拒絕)存取權時,這是一個非常方便的補充。
原則執行器現在接受一般存取令牌
在某些情況下,您可能只想將一般存取令牌傳送到資源伺服器,但仍然能夠在這些資源上執行原則。
此版本引入的主要變更之一是,您不再需要在不使用 UMA 時,將存取令牌與 RPT 交換,才能存取受資源伺服器保護的資源。根據資源伺服器端原則執行器的設定方式,您可以僅將一般存取令牌作為不記名令牌傳送,並且仍然會強制執行權限。
原則執行器現在可以依需求從伺服器載入資源
到目前為止,當部署配置了 policy-enforcer
的應用程式時,策略執行器會從伺服器載入所有受保護的路徑,或者僅從配接器配置中映射這些路徑。現在,使用者可以決定從伺服器按需載入路徑,並避免在配接器配置中映射這些資源。根據您擁有的受保護資源數量,此功能還可以縮短部署應用程式的時間。
主題和主題資源
現在可以透過常規提供者部署將主題熱部署到 Keycloak。我們還增加了對主題資源的支援,允許添加其他範本和資源,而無需建立主題。這對於需要將其他頁面添加到身份驗證流程的自定義身份驗證器非常有用。
我們還增加了支援,以覆蓋特定客戶端的主題。如果這不符合您的需求,那麼還有一個新的主題選擇器 SPI,允許您實施自定義邏輯來選擇主題。
Instagram 身份提供者
我們增加了使用 Instagram 登入的支援。感謝 hguerrero 的貢獻。
配接器
JavaScript - Cordova 選項
現在可以將 Cordova 特定的選項傳遞給 JavaScript 配接器中的登入和其他方法。感謝 loorent 的貢獻。