Keycloak Spring Security適配器的常用配置
在上一篇Keycloak系列文章中,我們把Keycloak同Spring Security成功適配,其中用了一個(gè)keycloak.json的配置。它包含了不少屬性,我覺得在深入學(xué)習(xí)Keycloak的過程中有必要和大家共同學(xué)習(xí)一下。
Keycloak適配器的常用屬性
在Spring Security集成Keycloak 適配器時(shí)需要引入一些額外的配置屬性。一般我們會(huì)把它配置到Spring Boot的配置文件中。
realm
Keycloak領(lǐng)域名稱,這是一個(gè)必須項(xiàng)。
resource
應(yīng)用的client_id,Keycloak服務(wù)器上注冊(cè)的每個(gè)客戶端都有一個(gè)獨(dú)一無二的標(biāo)識(shí)。這是一個(gè)必須項(xiàng)。
realm-public-key
PEM格式的realm公鑰,不建議客戶端配置。每次Keycloak Adapter會(huì)自動(dòng)拉取它。
auth-server-url
Keycloak服務(wù)器的基本地址,格式通常是https://host:port/auth,這是一個(gè)必須項(xiàng)。
ssl-required
Keycloak 服務(wù)器的通信使用HTTPS的范圍,是可選的,有三個(gè)選項(xiàng):
- external,默認(rèn)值,表示外部的請(qǐng)求都必須使用HTTPS。
- all,顧名思義,所有的都使用HTTPS。
- none, 禁用HTTPS。
confidential-port
Keycloak服務(wù)器的安全端口,默認(rèn) 8443。
use-resource-role-mappings
如果設(shè)置為true, Keycloak Adapter將檢查令牌攜帶的用戶角色是否跟資源一致;否則會(huì)去查詢r(jià)ealm中用戶的角色。默認(rèn)false。
public-client
設(shè)置為true則不需要為客戶端配置密碼,否則需要配置keycloak.credentials.secret。生成secret的方法是在Keycloak控制臺(tái)上修改對(duì)應(yīng)客戶端設(shè)置選項(xiàng)的訪問類型為confidential,然后在安裝中查看對(duì)應(yīng)配置項(xiàng)。當(dāng)訪問類型不是confidential時(shí)該值為false。
enable-cors
開啟跨域(cors)支持??蛇x項(xiàng),默認(rèn)false。如果設(shè)置為true就激活了cors-開頭的配置項(xiàng),這些配置項(xiàng)都不啰嗦了,都是常見的跨域配置項(xiàng)。
bearer-only
對(duì)于服務(wù),這應(yīng)該設(shè)置為true。如果啟用,適配器將不會(huì)嘗試對(duì)用戶進(jìn)行身份驗(yàn)證,而只會(huì)驗(yàn)證不記名令牌。如果用戶請(qǐng)求資源時(shí)沒有攜帶Bearer Token將會(huì)401。這是可選的。默認(rèn)值為false。
autodetect-bearer-only
如果你的應(yīng)用不僅僅是Web應(yīng)用而且還提供API服務(wù)(現(xiàn)在通常是Restful Service),開啟了這一配置后Keycloak服務(wù)器會(huì)通過請(qǐng)求標(biāo)頭相對(duì)“智能”地引導(dǎo)未認(rèn)證的用戶到登錄頁(yè)面還是返回401狀態(tài)。比bearer-only更加智能一些。
enable-basic-auth
為適配器開啟Basic Authentication認(rèn)證,如果開啟就必須提供secret。默認(rèn)false。
expose-token
JavaScript CORS 請(qǐng)求通過根路徑下/k_query_bearer_token用來從服務(wù)器獲取令牌的,好像是nodejs相關(guān)的后端應(yīng)用使用的東西,我折騰了半天沒有調(diào)用成功。
credentials
當(dāng)客戶端的訪問類型(access type)為Confidential時(shí),需要配置客戶端令牌,目前支持secret和jwt類型。參考public-client中的描述。
總結(jié)
上面列舉了大部分我們常用的屬性,后面的屬性和定制Keycloak服務(wù)器相關(guān)暫時(shí)不介紹了。Keycloak剩下的配置項(xiàng)可以到Keycloak Java適配器配置項(xiàng)[1]查看。下一篇我將對(duì)Keycloak Spring Security認(rèn)證授權(quán)的流程作出一個(gè)分析。
參考資料
[1]Keycloak Java適配器配置項(xiàng): https://www.keycloak.org/docs/latest/securing_apps/index.html#_java_adapter_config
本文轉(zhuǎn)載自微信公眾號(hào)「碼農(nóng)小胖哥」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系碼農(nóng)小胖哥公眾號(hào)。