Keycloak單點(diǎn)登錄

目錄

  • Github
  • Keycloak介紹
  • Keycloak配置
  • Spring Security集成Keycloak
  • 啟動(dòng)Keycloak客戶(hù)端
  • SSO授權(quán)碼模式訪(fǎng)問(wèn)過(guò)程
  • 總結(jié)

在企業(yè)眾多的應(yīng)用系統(tǒng)中恐似,如果每個(gè)應(yīng)用都有獨(dú)立的用戶(hù)認(rèn)證和權(quán)限管理利凑,這不僅需要維護(hù)多套用戶(hù)管理系統(tǒng),用戶(hù)使用每個(gè)系統(tǒng)也非常的不便捏浊。如果能夠?qū)⑺袘?yīng)用系統(tǒng)的用戶(hù)集中管理僚碎,用戶(hù)使用一套用戶(hù)名登錄所有系統(tǒng)震桶,將會(huì)大大改善用戶(hù)體驗(yàn)。下面將基于Keycloak搭建單點(diǎn)登錄系統(tǒng)克婶。

GitHub

Keycloak介紹

Keycloak是為現(xiàn)代應(yīng)用和服務(wù)提供了開(kāi)源IAM(Identity and Access Management)解決方案扇丛。下面簡(jiǎn)單的介紹幾種功能:

  • SSO
    通過(guò)Keycloak處理用戶(hù)認(rèn)證术吗,意味著你的應(yīng)用不需要處理登錄界面,認(rèn)證用戶(hù)晕拆,存儲(chǔ)用戶(hù)信息。一旦登錄Keycloak, 用戶(hù)不需要再次登錄Keycloak管理下的其它應(yīng)用材蹬。實(shí)現(xiàn)一次登錄实幕,多處登錄不同應(yīng)用,一處登出堤器,所有應(yīng)用登出昆庇。
  • Identity Brokering and Social Login
    Keycloak通過(guò)配置,可實(shí)現(xiàn)對(duì)不同身份認(rèn)證服務(wù)的集成闸溃,通過(guò)這些身份認(rèn)證服務(wù)登錄應(yīng)用整吆。


  • User Federation
    在企業(yè)系統(tǒng)中有使用LDAP/AD管理用戶(hù),同樣辉川,Keycloak 提供了對(duì)LDAP/AD的集成方案表蝙,可以方便的同步用戶(hù)。


  • Client Adapters
    Keycloak提供了不同平臺(tái)多種語(yǔ)言的支持乓旗,支持標(biāo)準(zhǔn)的OpenID Connect, OAuth 2.0, and SAML等府蛇。
  • 后臺(tái)管理
    Keycloak不僅提供了后臺(tái)管理界面,同時(shí)還有CLI屿愚,和RESTFul API方式管理后臺(tái)汇跨。


  • 集群方案

Keycloak Setup

  • 創(chuàng)建Client: login-app, login-backup


  • 創(chuàng)建client Roles


  • 創(chuàng)建用戶(hù), 并分配角色



    如果需要獲取所有用戶(hù)信息务荆,配置realm-management


  • 啟動(dòng)Keycloak standalone 模式,端口號(hào)為8180
    ./standalone.sh -Djboss.socket.binding.port-offset=100
    
    如果需要配置連接postgresql穷遂,請(qǐng)參考Github

Spring Security集成Keycloak

  • 配置application.properties
    keycloak.realm=demo
    keycloak.resource=login-app
    keycloak.auth-server-url=http://localhost:8180/auth
    keycloak.ssl-required=external
    keycloak.public-client=true
    keycloak.use-resource-role-mappings=true
    keycloak.confidential-port=0
    keycloak.principal-attribute=preferred_username
    
    其中keycloak.resource根據(jù)不同的client配置不同的變量函匕,內(nèi)容請(qǐng)參考Keycloak client installation,如下圖

啟動(dòng)Keycloak客戶(hù)端

  • 啟動(dòng)client: login-app, login-backup蚪黑,端口號(hào)分別為8081盅惜,8082,在keycloak client 配置頁(yè)面 ‘Valid Redirect URIs’ 填寫(xiě)相應(yīng)的端口號(hào)
    java -Dserver.port=8081 -jar login-app.jar
    java -Dserver.port=8082 -jar login-backup.jar
    

SSO授權(quán)碼模式訪(fǎng)問(wèn)過(guò)程

  • 訪(fǎng)問(wèn)login-app祠锣,圖中http://rp.example.com酷窥,當(dāng)瀏覽器登錄Keycloak(OP)后,會(huì)在瀏覽器保存KEYCLOAK_SESSION
  • 當(dāng)訪(fǎng)問(wèn)login-backup時(shí)伴网,圖中http://rp-2.example.com蓬推,瀏覽器將KEYCLOAK_SESSION一起請(qǐng)求Keycloak(OP), Keycloak(OP)根據(jù)KEYCLOAK_SESSION判斷用戶(hù)已登錄,直接授權(quán)澡腾,不需要用戶(hù)再次輸入用戶(hù)名和密碼沸伏。
  • 登錄login-app頁(yè)面跳轉(zhuǎn),包的抓取


總結(jié)

  • keycloak有對(duì)應(yīng)的單點(diǎn)登出动分,通過(guò)postman請(qǐng)求測(cè)試
  • 集成LDAP毅糟,測(cè)試可進(jìn)行連接,用戶(hù)屬性Map澜公,并可選擇用戶(hù)數(shù)據(jù)同步方式
  • 使用keycloak docker時(shí)偶爾不能獲取client role, 沒(méi)有解決
  • 使用keycloak docker時(shí)不能獲取用戶(hù)列表, 沒(méi)有解決姆另,即使配置了相應(yīng)的獲取權(quán)限
  • keycloak session沒(méi)有持久化的postgresql數(shù)據(jù)庫(kù)中,沒(méi)有解決
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末坟乾,一起剝皮案震驚了整個(gè)濱河市迹辐,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌甚侣,老刑警劉巖明吩,帶你破解...
    沈念sama閱讀 211,948評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異殷费,居然都是意外死亡印荔,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)详羡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)仍律,“玉大人,你說(shuō)我怎么就攤上這事实柠∪究粒” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,490評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)茶行。 經(jīng)常有香客問(wèn)我躯概,道長(zhǎng),這世上最難降的妖魔是什么畔师? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,521評(píng)論 1 284
  • 正文 為了忘掉前任娶靡,我火速辦了婚禮,結(jié)果婚禮上看锉,老公的妹妹穿的比我還像新娘姿锭。我一直安慰自己,他們只是感情好伯铣,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,627評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布呻此。 她就那樣靜靜地躺著,像睡著了一般腔寡。 火紅的嫁衣襯著肌膚如雪焚鲜。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,842評(píng)論 1 290
  • 那天放前,我揣著相機(jī)與錄音忿磅,去河邊找鬼。 笑死凭语,一個(gè)胖子當(dāng)著我的面吹牛葱她,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播似扔,決...
    沈念sama閱讀 38,997評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼吨些,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了炒辉?” 一聲冷哼從身側(cè)響起豪墅,我...
    開(kāi)封第一講書(shū)人閱讀 37,741評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎辆脸,沒(méi)想到半個(gè)月后但校,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體螃诅,經(jīng)...
    沈念sama閱讀 44,203評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡啡氢,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,534評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了术裸。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片倘是。...
    茶點(diǎn)故事閱讀 38,673評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖袭艺,靈堂內(nèi)的尸體忽然破棺而出搀崭,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 34,339評(píng)論 4 330
  • 正文 年R本政府宣布瘤睹,位于F島的核電站升敲,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏轰传。R本人自食惡果不足惜驴党,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,955評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望获茬。 院中可真熱鬧港庄,春花似錦、人聲如沸恕曲。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,770評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)佩谣。三九已至把还,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間稿存,已是汗流浹背笨篷。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,000評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留瓣履,地道東北人率翅。 一個(gè)月前我還...
    沈念sama閱讀 46,394評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像袖迎,于是被迫代替她去往敵國(guó)和親冕臭。 傳聞我的和親對(duì)象是個(gè)殘疾皇子燕锥,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,562評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容