2016-11-09 35 views
6

,當我訪問keycloak管理控制檯,創建客戶(遠程!):Keycloak:缺少境界公鑰

keycloak client settings

的keycloak OIDC JSON沒有公鑰

keycloak OIDC JSON

我期望在JSON裏有這樣的東西:

"realm-public-key": "MIIBIjANBg.... 

回答

15

keycloak.json在最新的keycloak沒有任何領域的公共密鑰......實際上,它似乎是你使用keycloak版本2.3.x有一些變化。基本上你可以旋轉一個領域的多個公鑰。該文件說: -

在2.3.0版本中,我們添加了對公鑰旋轉的支持。當管理員 在Keycloak管理控制檯中旋轉領域密鑰時,客戶端適配器 將能夠識別它並自動從Keycloak下載新公鑰 。但是,只要您的適配器中沒有領域公開密鑰選項, 硬編碼公鑰就可以自動下載新密鑰 。出於這個原因,我們不建議在適配器配置中使用 realm-public-key選項。請注意, 選項仍然受支持,但它可能很有用,只要您真的 想要在您的適配器配置中使用硬編碼公鑰,並且 絕不會從Keycloak下載公鑰。理論上,如果你在適配器和Keycloak之間有不可信的 網絡,這可以避免中間人攻擊,但是在這種情況下,更好的選擇是使用HTTPS,這將保護所有人 適配器和Keycloak之間的請求。

+1

是否有文檔可以使用公鑰? – ibotty

+0

@ibotty我還沒有遇到任何這樣的直接文檔,但您可以更改密鑰的優先級。具有最高優先級的密鑰得到了使用 – UchihaItachi

+0

僅僅爲一年前尋找我問題答案的人提供了一個註釋:您可以在'/protocol/openid-connect/certs'上獲得與GET一起使用的證書。 – ibotty

4

我仍然不知道爲什麼會出現在keycloak OIDC JSON(可能是從安全原因)不公鑰,但我已經下找到它:

領域設置>鍵>公共密鑰視圖

enter image description here

+0

*我仍然不知道爲什麼在keycloak中沒有公共密鑰OIDC JSON *這是因爲密鑰旋轉。如果適配器直接從服務器直接下載密鑰,而不是在JSON中對密鑰進行硬編碼,則更加靈活。這樣你可以旋轉這些鍵;每個月或更新換新的。 –