[英]KeyCloak User validation and getting token
首先,我是Keycloak的新手,如果我問的問題可能是錯的,請原諒。
我已經安裝了Keycloak服務器,我可以使用以下方法訪問Web UI:
我的要求是通過將領域用戶傳遞給k Keycloak API並從響應中獲取令牌來驗證領域用戶,然后將此標記傳遞給我的其他Web API調用。
但我無法找到一個關於如何做到這一點的簡單指南......
更新:
使用KEYCLOAK
用戶界面:
到目前為止:
我能夠創造一個realm
:例如: DemoRealm
在Realm
我創建了客戶端:例如: DemoClient
在客戶端下我創建了用戶:例如: DemoUser
使用POSTMAN
:
我也能夠成功獲取令牌
http://localhost:8080/auth/realms/DemoRelam/protocol/openid-connect/token
POST:
{
"grant_type": "client_credentials",
"username": "",
"password": "",
"client_secret":"",
"client_id":"DemoClient"
}
作為回應,我得到了令牌。
{
"access_token": "eyJhbGciOiJSUzI1NiIsINVSHGhepnDu13SwRBL-v-y-04_6e6IJbMzreZwPI-epwdVPQe-ENhpvms2WdGM_DmgMLZ8YQFS4LDl9R7ZHT8AgXe-WCFV6OFkA7zvdeFwQ4kVVZE0HlNgHgoi4DrgMfwwz_ku1yJNJP3ztTY1nEqmA",
"expires_in": 300,
"refresh_expires_in": 1800,
"refresh_token": "eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJRRnB5YlloMGVEektIdlhOb3JvaFUxdlRvWVdjdP3vbfvk7O0zvppK9N4-oaUqZSr0smHv5LkuLDQYdPuxA",
"token_type": "bearer",
"not-before-policy": 0,
"session_state": "bb1c586a-e880-4b96-ac16-30e42c0f46dc"
}
此外,我深入了解更多細節,並找到了這個API指南:
http://www.keycloak.org/docs-api/3.0/rest-api/index.html#_users_resource
在本指南中,我提到我可以使用Get users獲取領域的用戶返回根據查詢參數篩選的用戶列表
GET /admin/realms/{realm}/users
但是,當我使用POSTMAN
獲取用戶時,我收到403錯誤代碼。 我傳遞的信息與我在前面的步驟中獲得的身份驗證相同。
http://localhost:8080/auth/admin/realms/DemoRelam/users
有人可以指導我嗎?
您有兩個選擇:您可以代表某些用戶行事(如Adnan Khan指出的那樣),或者為此創建一個專用客戶端。
1)創建一個機密客戶端(我想你已經有一個)
2)創建用戶並為其分配適當的角色:例如,來自realm-management
組的view-users
3)獲取令牌(我使用curl和jq ):
KCHOST=https://yourkeycloak.com
REALM=realm
CLIENT_ID=confidential-client
CLIENT_SECRET=xxxxxxx-yyyyyy-zzzzzzzz
UNAME=user
PASSWORD=passwd
ACCESS_TOKEN=`curl \
-d "client_id=$CLIENT_ID" -d "client_secret=$CLIENT_SECRET" \
-d "username=$UNAME" -d "password=$PASSWORD" \
-d "grant_type=password" \
"$KCHOST/auth/realms/$REALM/protocol/openid-connect/token" | jq -r '.access_token'`
4)最后調用Admin REST API 用戶端點 :
curl -X GET -H "Authorization: Bearer $ACCESS_TOKEN" $KCHOST/auth/admin/realms/$REALM/users | jq
1)創建一個機密客戶端,並確保將“啟用服務帳戶”設置切換為“ On
2)轉到“ Service account roles tab
然后為該客戶端選擇適當的角色,例如,來自realm-management
組的realm-admin
3)獲取訪問令牌
KCHOST=https://yourkeycloak.com
REALM=realm
CLIENT_ID=protector-of-the-realm
CLIENT_SECRET=xxxxxxx-yyyyyyyy-zzzzzzzzz
ACCESS_TOKEN=`curl \
-d "client_id=$CLIENT_ID" -d "client_secret=$CLIENT_SECRET" \
-d "grant_type=client_credentials" \
"$KCHOST/auth/realms/$REALM/protocol/openid-connect/token" | jq -r '.access_token'`
4)調用REST API端點:
curl -X GET -H "Authorization: Bearer $ACCESS_TOKEN" $KCHOST/auth/admin/realms/$REALM/users | jq
PS為了進行調試,我剛剛編寫了一個名為brauzie的CLI工具,可以幫助您獲取和分析您的JWT令牌(范圍,角色等)。 它可以用於公共和機密客戶端。 你也可以使用Postman和https://jwt.io
HTH :)
keycloak中的用戶是特定於領域的,並不是每個用戶都可以訪問它們。 在管理儀表板中為用戶分配特定角色后,您將能夠通過管理API獲取所有用戶。 簡單地做
用戶> myuser>角色映射>客戶端角色>域管理
為用戶分配manage-users
或view-users
這兩個角色中的任何一個。
生成新令牌。
使用新令牌命中API
你將擁有你的用戶
Ps我認為您應該將問題標題更新為更相關的內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.