Keycloak是什么

登錄及身份認(rèn)證keycloak
登錄及身份認(rèn)證是現(xiàn)代web應(yīng)用最基本的功能之一,對(duì)于企業(yè)內(nèi)部的系統(tǒng),多個(gè)系統(tǒng)往往希望有一套SSO服務(wù)對(duì)企業(yè)用戶的登錄及身份認(rèn)證進(jìn)行統(tǒng)一的管理,提升用戶同時(shí)使用多個(gè)系統(tǒng)的體驗(yàn),Keycloak正是為此種場(chǎng)景而生。
1?Keycloak是什么
Keycloak是一種面向現(xiàn)代應(yīng)用和服務(wù)的開源IAM(身份識(shí)別與訪問管理)解決方案。
Keycloak提供了單點(diǎn)登錄(SSO)功能,支持OpenID?Connect、OAuth?2.0、SAML?2.0標(biāo)準(zhǔn)協(xié)議,擁有簡(jiǎn)單易用的管理控制臺(tái),并提供對(duì)LDAP、Active?Directory以及Github、Google等社交賬號(hào)登錄的支持,做到了非常簡(jiǎn)單的開箱即用。
官網(wǎng):?https://www.keycloak.org/
2?Keycloak常用核心概念介紹
首先通過官方的一張圖來了解下整體的核心概念

這里先只介紹4個(gè)最常用的核心概念:
1.?Users:?用戶,使用并需要登錄系統(tǒng)的對(duì)象
2.?Roles:?角色,用來對(duì)用戶的權(quán)限進(jìn)行管理
3.?Clients:?客戶端,需要接入Keycloak并被Keycloak保護(hù)的應(yīng)用和服務(wù)
4.?Realms:?領(lǐng)域,領(lǐng)域管理著一批用戶、證書、角色、組等,一個(gè)用戶只能屬于并且能登陸到一個(gè)域,域之間是互相獨(dú)立隔離的,?一個(gè)域只能管理它下面所屬的用戶
3?Keycloak服務(wù)安裝及配置
3.1?安裝Keycloak
Keycloak安裝有多種方式,這里使用Docker進(jìn)行快速安裝
登錄后復(fù)制
docker?run?-d?--name?keycloak?\
????-p?8080:8080?\
????-e?KEYCLOAK_USER=admin?\
????-e?KEYCLOAK_PASSWORD=admin?\
????jboss/keycloak:13.0.0
訪問http://localhost:8080并點(diǎn)擊Administration?Console進(jìn)行登錄
?

3.2?創(chuàng)建Realm
首先,我們需要?jiǎng)?chuàng)建一個(gè)Realm。Realm是一個(gè)隔離的概念,Realm?A中的用戶與Realm?B中的用戶完全隔離。創(chuàng)建一個(gè)新的realm:?demo,后續(xù)所有的客戶端、用戶、角色等都在此realm中創(chuàng)建。
?

3.3?創(chuàng)建客戶端
3.3.1?創(chuàng)建前端應(yīng)用客戶端
創(chuàng)建一個(gè)新的客戶端:KeycloakAuthaspnet,Access?Type選擇confidential。

3.3.2?關(guān)于客戶端的訪問類型(Access?Type)
上面創(chuàng)建的客戶端的訪問類型分別是confidential,那么為什么分別選擇這種類型,實(shí)際不同的訪問類型有什么區(qū)別呢?
事實(shí)上,Keycloak目前的訪問類型共有3種:
·?confidential:適用于服務(wù)端應(yīng)用,且需要瀏覽器登錄以及需要通過密鑰獲取access?token的場(chǎng)景。典型的使用場(chǎng)景就是服務(wù)端渲染的web系統(tǒng)。
·?public:適用于客戶端應(yīng)用,且需要瀏覽器登錄的場(chǎng)景。典型的使用場(chǎng)景就是前端web系統(tǒng),包括采用vue、react實(shí)現(xiàn)的前端項(xiàng)目等。
·?bearer-only:適用于服務(wù)端應(yīng)用,不需要瀏覽器登錄,只允許使用bearer?token請(qǐng)求的場(chǎng)景。典型的使用場(chǎng)景就是restful?api。
Access?Type?里面選?Confidential,然后才有?Client?Secret?,保存之后,會(huì)出現(xiàn)Credentials的Tab,記錄下這里的secret,后面要用到
3.4?創(chuàng)建用戶和角色
3.4.1?創(chuàng)建角色
創(chuàng)建2個(gè)角色:admin、user

還可以創(chuàng)建全局的角色

3.4.2??創(chuàng)建用戶
創(chuàng)建1個(gè)用戶:geffzhang

?綁定用戶和角色
3.4.3?用戶分配角色
總結(jié)
Keycloak部署及接入簡(jiǎn)單,輕量的同時(shí)功能又不失強(qiáng)大,非常適合企業(yè)內(nèi)部的SSO方案。