通过 CLI 为 Keycloak 配置 reCAPTCHA

Configuration of reCAPTCHA for Keycloak via CLI

有没有办法通过 CLI 为 Keycloak 独立安装配置 reCAPTCHA?更准确地说,是否可以在 kcadm.sh 的帮助下执行 here in the Keycloak docs 描述的所有步骤?

您可以使用 Keycloak Admin REST API 来实现。

第一步是获取管理员令牌,这样就可以调用 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

您将获得带有管理员令牌的 json response。从该响应中提取 访问令牌 (我们称为 $ACCESS_TOKEN)。

现在,我们需要获取链接到注册流程的所有执行的列表:

curl  -X GET https://$KEYCLOAK_IP/auth/admin/realms/$REALM_NAME/authentication/flows/registration/executions \
                -H "Content-Type: application/json" \
                -H "Authorization: bearer $ACCESS_TOKEN"

json response 中提取 "providerId=registration-recaptcha-action"id。让我们称之为 id$ID_RECAPTCHA.

接下来进行注册时需要的验证码:

CAPTCHA_DATA='{"id":"$ID_RECAPTCHA","requirement":"REQUIRED","providerId":"registration-recaptcha-action"}'

curl -X PUT https://$KEYCLOAK_IP/auth/admin/realms/$REALM_NAME/authentication/flows/registration/executions \
                            -H "Content-Type: application/json" \
                            -H "Authorization: bearer $ACCESS_TOKEN"\
                            -d "$JSON_DATA"

最后,配置你自己的验证码:

CONFIG_DATA='{"config":{"site.key":"<YOUR SITE KEY>","secret":"<YOUR SECRET>","useRecaptchaNet":"<True or False>"},"alias":"<The CAPTCHA ALIAS>"}'

curl -X POST https://$KEYCLOAK_IP/auth/admin/realms/$REALM_NAME/authentication/executions/$ID_RECAPTCHA/config \
                -H "Content-Type: application/json" \
                -H "Authorization: bearer $ACCESS_TOKEN"\

接下来,最好的办法是使用一些 bash 脚本自动执行此过程。