使用Admin REST API创建Keycloak领域
时间:2020-03-21 11:43:11 来源:igfitidea点击:
Keycloak提供了功能齐全的Admin REST API。
创建一个新领域
配置环境,根据需要更改详细信息以匹配系统。
NEW_REALM="example" KEYCLOAK_URL=http://127.0.0.1:8080 KEYCLOAK_REALM="master" KEYCLOAK_USER="admin" KEYCLOAK_SECRET="changeme" REALM_FILE="realm.json"; CURL_CMD="curl --silent --show-error"
文件“ realm.json”的内容可以在下面看到。
{
"realm":"example",
"notBefore":0,
"enabled":true,
"sslRequired":"all",
"bruteForceProtected":true,
"failureFactor":10,
"eventsEnabled":false
}
获取访问令牌
获取访问令牌:
ACCESS_TOKEN=$(${CURL_CMD} \
-X POST \
-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' \
"${KEYCLOAK_URL}/auth/realms/${KEYCLOAK_REALM}/protocol/openid-connect/token"|jq -r '.access_token')
响应主体为JSON,我们使用'jq'提取'access_token'属性的值。
我见过人们使用'sed',我认为'jq'更容易。
(可选)检查令牌:
echo ${ACCESS_TOKEN}
创建一个新的领域:
${CURL_CMD} \
-X POST \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
-H "Content-Type: application/json" \
-d @"${REALM_FILE}" \
"${KEYCLOAK_URL}/auth/admin/realms";
验证领域已创建:
${CURL_CMD} \
-X GET \
-H "Accept: application/json" \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
"${KEYCLOAK_URL}/auth/admin/realms/${NEW_REALM}"|jq -r .|head;
API范例
这些是API示例,而不是实际配置。
文件“ client.json”的内容可以在下面看到。
{
"clientId":"example",
"rootUrl":"https://example.com/example/",
"adminUrl":"https://example.com/example/"
}
创建一个新客户端:
CLIENT_FILE="client.json";
${CURL_CMD} \
-X POST \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
-H "Content-Type: application/json" \
-d @"${CLIENT_FILE}" \
"${KEYCLOAK_URL}/auth/admin/realms/${NEW_REALM}/clients";
更新领域的顶级信息:
${CURL_CMD} \
-X PUT \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
-H "Content-Type: application/json" \
-d @"${NOT_A_REAL_FILE_JUST_AN_EXAMPLE}" \
"${KEYCLOAK_URL}/auth/admin/realms/${NEW_REALM}";
创建一个新的身份提供者实例:
${CURL_CMD} \
-X POST \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
-H "Content-Type: application/json" \
-d @"${NOT_A_REAL_FILE_JUST_AN_EXAMPLE}" \
"${KEYCLOAK_URL}/auth/admin/realms/${NEW_REALM}/identity-provider/instances";
创建一个新的身份提供程序映射器:
${CURL_CMD} \
-X POST \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
-H "Content-Type: application/json" \
-d @"${NOT_A_REAL_FILE_JUST_AN_EXAMPLE}" \
"${KEYCLOAK_URL}/auth/admin/realms/${NEW_REALM}/identity-provider/instances/${IDP_ALIAS}/mappers";
创建一个新的身份验证流程配置:
${CURL_CMD} \
-X POST \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
-H "Content-Type: application/json" \
-d @"${NOT_A_REAL_FILE_JUST_AN_EXAMPLE}" \
"${KEYCLOAK_URL}/auth/admin/realms/${NEW_REALM}/authentication/flows";
提高执行优先级:
${CURL_CMD} \
-X POST \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
-H "Content-Type: application/json" \
"${KEYCLOAK_URL}/auth/admin/realms/${NEW_REALM}/authentication/executions/${EXECUTION_ID}/raise-priority";
添加新的身份验证执行:
${CURL_CMD} \
-X POST \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
-H "Content-Type: application/json" \
-d @"${NOT_A_REAL_FILE_JUST_AN_EXAMPLE}" \
"${KEYCLOAK_URL}/auth/admin/realms/${NEW_REALM}/authentication/executions";

