上一篇文章簡單介紹了Keycloak,反響不錯。看來你們都對這個東西感興趣,今天就來進一步的體驗Keycloak,讓咱們對它有一個直觀的認識,而後逐步深刻,把它的設計理念和概念各個擊破。docker
由於事先已經知道Keycloak提供了Spring Security的適配器。先獨立把Keycloak的核心概念弄清楚,而後再去研究它如何結合Spring Security的。安全
❝本文的Keycloak版本爲
14.0.0
。app
我向來不喜歡在安裝上浪費時間,研究階段能用Docker來安裝是最省心的。框架
docker run -d -p 8011:8080 --name keycloak-server -e KEYCLOAK_USER=admin -e KEYCLOAK_PASSWORD=admin jboss/keycloak
執行上述命令安裝Keycloak,成功後打開http://localhost:8011/auth/admin
輸入帳號admin
和密碼admin
,就進入了管理控制檯。若是你感受英文不爽能夠根據下圖改爲中文:ide
中文界面的修改學習
改完以後你隨便點點欄目瞭解一下,想象一下它們各自的功能和做用,這時候你要放輕鬆點不用想的太深就是了解一下全貌。設計
若是你接觸過知名安全框架Shiro相信對這個概念不會陌生。realm
是管理用戶和對應應用的空間,有點租戶的味道,可讓不一樣realm
之間保持邏輯隔離的能力。code
默認狀況下,Keycloack提供了一個叫Master
的realm
,這個Master
不承擔具體應用和用戶的管理,它只用來管理其它realm
的生命週期。server
Master域的管理職能示意圖blog
登入Master
的realm
建立一個自定義域felord.cn
。
建立自定義域
User
是可以登陸到應用系統的實體,其實能夠理解爲帳戶。他們能夠擁有與本身相關的屬性,例如電子郵件、用戶名、地址、電話號碼和生日。能夠爲他們分配組成員身份併爲其分配特定的角色。Keycloak
中的User
都有他們從屬的realm
。接下來在我上面的自定義域felord.cn
中新建一個用戶,步驟爲:
菜單欄找到管理->用戶,而後打開添加用戶。
鍵入惟一的必填項用戶名(username)
。
開啓(ON
)郵件認證(Email Verified(,而後保存。
點擊憑據(Credentials)選項卡爲新用戶設置臨時密碼。此密碼是臨時的,用戶將須要在第一次登陸時更改它。若是您更喜歡建立永久密碼,請將臨時開關切換到關閉並單擊設置密碼。
而後註銷當前用戶admin
併到http://localhost:8011/auth/realms/felord.cn/account
以剛建立的用戶felord
的身份登陸到felord.cn
域。
❝有沒有發現登陸連接的特色?
到這裏一個建立realm
和帳戶的流程就熟悉完了,不過我相信大多數同窗看到這裏仍是懵逼的。怎麼就手動了呢?不要急後面會結合代碼來實現上述的流程以及更加符合應用場景的流程。
接下來是咱們在使用Keycloak時須要掌握的一些概念,上面已經提到了realm
和user
,這裏就再也不贅述了
識別和驗證用戶的過程。證實「你說的這個你就是你」。
授予用戶訪問權限的過程。代表「你能夠幹什麼、不能夠幹什麼」。
證實用戶身份的憑證。多是密碼、一次性密碼、數字證書以及指紋。
角色是RBAC的重要概念,用於代表用戶的身份類型。
用戶角色映射關係。一般一個用戶可能有多個角色,一個角色也能夠對應不一樣的人。
複合角色,聽起來很玄乎,其實就是角色的從屬關係或者說繼承關係。B
角色從屬於A
角色,那麼你擁有了A
角色就必定擁有B
角色的權限。
用戶組,你能夠將一系列的角色賦予定義好的用戶組,一旦某用戶屬於該用戶組,那麼該用戶將得到對應組的全部角色權限。
客戶端。一般指一些須要向Keycloack請求以認證一個用戶的應用或者服務,甚至能夠說尋求Keycloack保護並在Keycloack上註冊的請求實體都是客戶端。
Keycloack爲了支持多語言和跨平臺而設計的適配器,好比適配Java的、適配Python的。有些是內置的實現,有些須要咱們按照Keycloack的抽象定義來實現。後續咱們主要和Spring Boot Adapter打交道。
用來認證用戶的服務,簡稱IDP
。Keycloack自己就是一個IDP
。這個相似Spring Security中的AuthenticationProvider
接口。
❝還有一些概念等遇到了會再補充,有點多,先消化消化。
今天這一篇主要對Keycloack進行一個初步的體驗,搭建了一個開發環境供後續的學習,同時對Keycloack的一些核心概念進行了彙總。不過因爲篇幅限制沒有徹底的去梳理一些概念,不過學習都是按部就班的,急不得。自定義realm
和用戶都建好了,下一篇我將嘗試用Keycloack來保護Spring Boot應用。業餘時間,碼字不易,還請多多關注,大力支持一下做者。