2017-02-28 162 views
2

使用CURL的示例https://keycloak.gitbooks.io/server-developer-guide/content/v/2.2/topics/admin-rest-api.html適用於從Docker鏡像運行KeyCloak的示例。使用客戶機密調用KeyCloak的Admin REST API

要向我的應用程序的最終目標形狀移動,我想使用客戶端ID和密碼進行身份驗證,而不是使用用戶名+密碼進行身份驗證。

然而,當我切換管理,CLI客戶機到「啓用服務帳戶」,訪問類型機密,並獲得令牌通過以下調用:

curl -d "client_id=admin-cli" -d "client_id=admin-cli" -d "client_secret=xxxx" -d "grant_type=client_credentials" "http://localhost:8080/auth/realms/master/protocol/openid-connect/token" 

該令牌在403錯誤結果從調用管理REST API。我做錯了什麼?

回答

0

當認證爲這樣的客戶時,客戶的服務帳戶需要被授予適當的角色(例如'admin')。這可以在客戶端的KeyCloak管理員的「服務帳戶角色」選項卡上完成。

0

這裏是我是如何實現的client_credentials管理-CLI:

  1. 啓用「服務帳戶」像你說的
  2. 集「訪問類型」機密 - 這使得它的使用client_secret和分配的祕密(憑據選項卡)。
  3. 「服務帳戶」選項卡上
  4. ,授予服務帳戶從境界的管理客戶端角色的境界管理員角色

因爲我是一個特定領域下做這行的管理,CLI客戶端,可以從「主」到無論你的境界是,更改領域在我的情況EEC-RLM:

http://192.168.101.139:8080/auth/realms/EEC-RLM/protocol/openid-connect/token

爲了完整起見,當你調用管理URI,您將設置授權頭爲「承載的access_token」其中access_token是從上面的/ token uri返回的access_token。就我而言,我呼籲:

http://192.168.101.139:8080/auth/admin/realms/EEC-RLM/users

當它涉及的文件不一定是特別清楚實際的URL來調用:我最初以爲這些操作總是在主領域,例如,這是不案子。

相關問題