[英]Export users and roles from Keycloak
您将无法使用导出功能执行此操作。 但是,您可以使用Keycloak Admin REST API获取该信息
第一步是从 admin 类用户(例如,主域的管理员)获取访问令牌,以便您可以调用 Rest API:
curl -d "client_id=admin-cli" \
-d "username=$ADMIN_NAME" \
-d "password=$ADMIN_PASSWORD" \
-d "grant_type=password" \
https://$KEYCLOAK_IP/auth/realms/master/protocol/openid-connect/token
您将收到带有admin token.
的JSON
响应。 从该响应中提取access token
(我们称为$ACCESS_TOKEN
)。
现在您可以获取用户列表:
curl -X GET https://$KEYCLOAK_IP/auth/admin/realms/$REALM_NAME/users
-H "Content-Type: application/json" \
-H "Authorization: bearer $ACCESS_TOKEN"
现在获取 Realm 角色:
curl -X GET https://$KEYCLOAK_IP/auth/admin/realms/$REALM_NAME/roles
-H "Content-Type: application/json" \
-H "Authorization: bearer $ACCESS_TOKEN"
现在您只需将来自这些端点的 JSON 响应保存到 JSON 文件中。
在按照dreamcrash 的指南导出用户和角色时,您可能希望在一个脚本中实现所有功能:
您可以使用命令行工具jq来集成所有 3 个 JSON 部分:
# define the variables: url, credentials to access REST API, and the realm to export
KEYCLOAK_URL="https://localhost:8080"
KEYCLOAK_REALM="master"
KEYCLOAK_USER="admin"
KEYCLOAK_SECRET="secret"
REALM_NAME="myRealm"
# obtain the access token
ACCESS_TOKEN=$(curl -X POST "${KEYCLOAK_URL}/auth/realms/${KEYCLOAK_REALM}/protocol/openid-connect/token" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "username=${KEYCLOAK_USER}" \
-d "password=${KEYCLOAK_SECRET}" \
-d "grant_type=password" \
-d 'client_id=admin-cli' \
| jq -r '.access_token')
# export the realm as JSON
curl -X GET "${KEYCLOAK_URL}/auth/admin/realms/${REALM_NAME}"
-H "Accept: application/json" \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
> keycloak_${REALM_NAME}_realm.json
# export the users
curl -X GET "${KEYCLOAK_URL}/auth/admin/realms/${REALM_NAME}/users" \
-H "Accept: application/json" \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
> keycloak_${REALM_NAME}_users.json
# export the roles
curl -X GET "${KEYCLOAK_URL}/auth/admin/realms/${REALM_NAME}/roles" \
-H "Accept: application/json" \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
> keycloak_${REALM_NAME}_roles.json
# integrate all 3 using jq's slurp
jq -s '.[0] + {users:.[1], roles:.[2]}' \
keycloak_${REALM_NAME}_realm.json \
keycloak_${REALM_NAME}_users.json \
keycloak_${REALM_NAME}_roles.json \
> keycloak_${REALM_NAME}_realm-incl-users-roles.json
生成的文件keycloak_${REALM_NAME}_realm-incl-users-roles.json
可能看起来像这个简化的例子:
{
"realm": "master",
"users": [
{
"id": "user1"
},
{
"id": "user2"
}
],
"roles": [
{
"id": "role1"
},
{
"id": "role2"
}
]
}
独立使用 Keycloak:
bin\kc.bat export --file realm_export.json --realm test_realm --users realm_file
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.