Keycloak 基本功能


Keycloak是一個致力於解決應用和服務身份驗證與訪問管理的開源工具。可以通過簡單的配置達到保護應用和服務的目的。

用戶管理

你的應用不需要開發登錄模塊,驗證用戶和保存用戶。Keycloak開發了用戶管理,登錄,注冊,密碼策略,安全問題,二步驗證,密碼重置等功能。登錄,注冊界面所需字段都是可配置,可自定義的。

用戶角色,權限管理功能,用戶組功能。用戶sessions管理。

單點登錄/登出(Single-Sign On/Out)

用戶通過Keycloak驗證身份而非應用本身。當用戶通過Keycloak的身份驗證后,訪問其他應用則不需要登錄。

登出同樣適用。Keycloak也提供單點登出。

Kerberos對接

如果用戶驗證是通過Kerberos(LDAP或Active Directory)的方式,在登錄工作站后,也能自動的通過Keycloak驗證,而不需要再次提供用戶名密碼。

身份代理和社交應用登錄(Identity Brokering and Social Login)

在后台管理配置社交應用可以實現第三方應用授權。

Keycloak也能通過現成的OpenID Connect或SAML2.0 Identity Providers驗證用戶。只需要在后台配置即可。

用戶聯盟(User Federation)

Keycloak有內置的連接LDAP或AD的功能。你也可以實現自己的IdP,比如用戶存儲在關系型數據庫。

客戶端適配器(Client Adapters)

適配器讓保護應用和服務變得很簡單。已經有很多平台和編程語言的適配器。如果沒有與你的平台相適應的適配器,別擔心,Keycloak是建立在標准的協議之上,你可以使用任何OpenID Connect Resource Library或SAML 2.0 Service Provider library來實現。

你可以使用代理服務器來保護你的應用,那就根本不需要修改應用了。

后台管理(Admin Console)

通過后台管理,管理員可以管理Keycloak所有方面的配置。可以開啟關閉多種功能,配置身份代理和用戶聯盟。可以定義應用和服務,定義細粒的授權策略。管理用戶,包括角色,權限,sessions等。

賬戶管理界面(Account Management Console)

用戶可以通過賬戶管理界面管理自己的信息,更新,設定二次驗證。用戶也可以管理自己的sessions。

標准協議(Standard Protocols)

Keycloak是基於標准協議開發的,支持OpenID Connect, OAuth 2.0和SAML。

授權服務(Authorization Services)

如果基於role的授權無法滿足需求,Keycloak提供細粒的授權服務。允許你通過后台管理所有的服務,可以定義滿足你的需求的策略。

Admin REST API

Keycloak提供REST API用於后台管理,包括對Clients,Groups, Users, Roles等一系列資源的管理。這就為應用與Keycloak交互提供可能,應用可以在業務中實現對用戶角色權限的增減。

自定義主題

Keycloak為web頁面和email信息提供主題支持,更換符合公司產品風格的樣式,可以自定義內容包括:

  • 賬戶管理界面
  • 后台管理界面
  • 郵件
  • 登錄界面
  • 歡迎界面

自定義用戶字段(Custom User Attributes)

我們可以在用戶屬性頁添加自定義屬性,並在注冊界面或用戶信息頁展示。

集群環境(Clustering)

Keycloak支持集群環境,保障Keycloak的穩定運行,減小服務器壓力。集群的搭建可以選擇standalone模式或domain模式。domain模式經官方提供的文檔使用軟件負載均衡已經搭建成功。

服務器緩存(Server Cache)

Keycloak有兩種緩存,一種緩存數據庫內容到內存,用以減少獲取數據的時間,包括realm, client, role和用戶元數據。這種緩存是本地緩存,本地緩存是不會在集群環境中復制的。如果數據被更新了,一個失效消息會發送給剩下所有的節點服務器,用於更新緩存。當然有的緩存可以支持集群,需要告訴集群服務器,將特定的條目從本地緩存中移除。
另一種緩存用於處理用戶sessions,離線tokens以及跟蹤登錄失敗次數,用於檢測網絡攻擊。這種緩存是臨時的,只在內存中保存,但是也可以復制到集群環境中。

HTTPS/SSL

Keycloak支持HTTPS協議傳輸,這也是官方推薦的方式。不過實際產品為了安全和負載均衡,可以考慮反響代理,對代理服務器做SSL,代理服務器與Keycloak交互仍使用HTTP協議。

服務提供者接口(Service Provider Interfaces)

Keycloak設計為包括大多數使用場景,但也支持定制化。Keycloak設計了SPI來允許開發者實現自己的服務提供者。Keycloak可用的SPI有Connections JPA,Email Sender,Email Listener,Login Protocol,Realm等。

擴展服務器(Extending Server)

Keycloak SPI框架提供實現或覆蓋已有的providers。Keycloak也提供擴展核心功能的方式,包括:

  • 增加自定義REST服務
  • 增加自定義SPI
  • 增加自定義JPA實體到Keycloak數據模型中

驗證身份SPI(AUthentication SPI)

Keycloak自帶不同的驗證機制:kerberos, 密碼和一次性密碼。這些機制可能無法滿足你的需求,你可能會增加自己的驗證機制。Keycloak提供一個驗證身份SPI供創建新的插件時使用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM