Supprimer keycloak-adm-clients.sh

This commit is contained in:
Grégory Lebreton 2025-08-29 17:27:02 +02:00
parent 83ffe14fca
commit 438459eddf

View File

@ -1,95 +0,0 @@
#!/bin/bash
# Configuration
KEYCLOAK_CONTAINER="keycloak"
KEYCLOAK_URL="http://localhost:8080"
REALM="mon-realm"
ADMIN_USER="admin"
ADMIN_PASS="admin"
CLIENT_IDS=("mon-client-1" "mon-client-2" "mon-client-3")
# CLIENT_IDS=("adventure" "ai" "djangoquiz" "gitea" "glpi" "grafana" "leboard.legaragenumerique.fr" "netxcloud.legaragenumerique.fr" "odoo" "pdf" "penpot" "sshwifty" "synapse")
EXPORT_FILE="clients-export.json"
# Exécuter kcadm dans le conteneur
kcadm() {
docker exec -i "$KEYCLOAK_CONTAINER" /opt/keycloak/bin/kcadm.sh "$@"
}
# Authentification
login() {
kcadm config credentials --server "$KEYCLOAK_URL" --realm master --user "$ADMIN_USER" --password "$ADMIN_PASS"
}
# Export des clients et mappers
export_clients() {
echo "[" > "$EXPORT_FILE"
for CLIENT_ID in "${CLIENT_IDS[@]}"; do
echo "🔄 Export du client : $CLIENT_ID"
CLIENT_JSON=$(kcadm get clients -r "$REALM" -q clientId="$CLIENT_ID" | jq '.[0]')
CLIENT_UUID=$(echo "$CLIENT_JSON" | jq -r '.id')
CLIENT_SECRET=$(kcadm get clients/"$CLIENT_UUID"/client-secret -r "$REALM" | jq -r '.value')
CLIENT_JSON=$(echo "$CLIENT_JSON" | jq --arg secret "$CLIENT_SECRET" '.secret = $secret')
# Export des protocol mappers
MAPPERS_JSON=$(kcadm get clients/"$CLIENT_UUID"/protocol-mappers/models -r "$REALM")
CLIENT_JSON=$(echo "$CLIENT_JSON" | jq --argjson mappers "$MAPPERS_JSON" '.protocolMappers = $mappers')
echo "$CLIENT_JSON," >> "$EXPORT_FILE"
done
sed -i '$ s/,$//' "$EXPORT_FILE"
echo "]" >> "$EXPORT_FILE"
echo "✅ Export terminé → $EXPORT_FILE"
}
# Import des clients et mappers
import_clients() {
jq -c '.[]' "$EXPORT_FILE" | while read -r CLIENT_JSON; do
CLIENT_ID=$(echo "$CLIENT_JSON" | jq -r '.clientId')
echo "⬇️ Import du client : $CLIENT_ID"
CLEAN_JSON=$(echo "$CLIENT_JSON" | jq 'del(.id, .secret, .rootUrl, .baseUrl, .adminUrl, .attributes."client.secret.created.timestamp", .protocolMappers)')
# Création du client
kcadm create clients -r "$REALM" -f - <<EOF
$CLEAN_JSON
EOF
CLIENT_UUID=$(kcadm get clients -r "$REALM" -q clientId="$CLIENT_ID" | jq -r '.[0].id')
# Réinjection du secret
CLIENT_SECRET=$(echo "$CLIENT_JSON" | jq -r '.secret')
kcadm update clients/"$CLIENT_UUID"/client-secret -r "$REALM" -s "value=$CLIENT_SECRET"
# Réinjection des mappers
echo "$CLIENT_JSON" | jq -c '.protocolMappers[]?' | while read -r MAPPER; do
kcadm create clients/"$CLIENT_UUID"/protocol-mappers/models -r "$REALM" -f - <<EOF
$MAPPER
EOF
done
echo "✅ Importé : $CLIENT_ID"
done
}
# Affichage d'aide
usage() {
echo "Usage: $0 [export|import]"
exit 1
}
####################### MAIN #######################
login
case "$1" in
export)
export_clients
;;
import)
import_clients
;;
*)
usage
;;
esac