|
| 1 | +#!/bin/bash |
| 2 | + |
| 3 | +SUBDOMAIN=${SUBDOMAIN:-"my-company.com"} |
| 4 | +CONTROL_PLANE_INGRESS_ENDPOINT=${CONTROL_PLANE_INGRESS_ENDPOINT:-"https://ui.${SUBDOMAIN}"} |
| 5 | +ACCOUNT=${ACCOUNT:-"AccountTest"} |
| 6 | +URI="${CONTROL_PLANE_INGRESS_ENDPOINT}/auth/admin/realms/${KEYCLOAK_REALM:-"artesca"}" |
| 7 | +HEADER="Content-Type: application/json" |
| 8 | +STORAGE_MANAGER=${STORAGE_MANAGER:-"storage_manager"} |
| 9 | +STORAGE_ACCOUNT_OWNER=${STORAGE_ACCOUNT_OWNER:-"storage_account_owner"} |
| 10 | +DATA_CONSUMER=${DATA_CONSUMER:-"data_consumer"} |
| 11 | +DATA_ACCESSOR=${DATA_ACCESSOR:-"data_accessor"} |
| 12 | +PASSWORD_CONFIGURATION='[{"type":"password","value":"123","temporary":"false"}]' |
| 13 | + |
| 14 | +echo "Request for authorization" |
| 15 | +RESULT=`curl -k \ |
| 16 | + --data "username=${KEYCLOAK_USERNAME:-"admin"}&password=${KEYCLOAK_PASSWORD:-"password"}&grant_type=password&client_id=${KEYCLOAK_CLIENT_ID:-"admin-cli"}" \ |
| 17 | + ${CONTROL_PLANE_INGRESS_ENDPOINT}/auth/realms/master/protocol/openid-connect/token` |
| 18 | +[ -z "$RESULT" ] && exit 1 |
| 19 | + |
| 20 | +echo "Recovery of the token" |
| 21 | +TOKEN=`echo $RESULT | sed 's/.*access_token":"//g' | sed 's/".*//g'` |
| 22 | + |
| 23 | +echo "Display token" |
| 24 | +echo $TOKEN |
| 25 | + |
| 26 | +echo "- Group creation" |
| 27 | + |
| 28 | +curl -k "${URI}/groups" -H "${HEADER}" -H "Authorization: bearer $TOKEN" --data '{"name":"'${ACCOUNT}'::StorageAccountOwner"}' || exit 1 |
| 29 | +curl -k "${URI}/groups" -H "${HEADER}" -H "Authorization: bearer $TOKEN" --data '{"name":"'${ACCOUNT}'::DataConsumer"}' || exit 1 |
| 30 | +curl -k "${URI}/groups" -H "${HEADER}" -H "Authorization: bearer $TOKEN" --data '{"name":"'${ACCOUNT}'::DataAccessor"}' || exit 1 |
| 31 | + |
| 32 | +echo "- Role creation" |
| 33 | + |
| 34 | +curl -k "${URI}/roles" -H "${HEADER}" -H "Authorization: bearer $TOKEN" --data '{"name":"'${ACCOUNT}'::StorageAccountOwner"}' || exit 1 |
| 35 | +curl -k "${URI}/roles" -H "${HEADER}" -H "Authorization: bearer $TOKEN" --data '{"name":"'${ACCOUNT}'::DataConsumer"}' || exit 1 |
| 36 | +curl -k "${URI}/roles" -H "${HEADER}" -H "Authorization: bearer $TOKEN" --data '{"name":"'${ACCOUNT}'::DataAccessor"}' || exit 1 |
| 37 | + |
| 38 | +echo "Done" |
| 39 | + |
| 40 | +echo "- User creation" |
| 41 | + |
| 42 | +curl -k "${URI}/users" \ |
| 43 | + -H "${HEADER}" \ |
| 44 | + -H "Authorization: bearer $TOKEN" \ |
| 45 | + --data "{\ |
| 46 | + \"username\":\"${STORAGE_MANAGER}\",\ |
| 47 | + \"firstName\":\"${STORAGE_MANAGER}\",\ |
| 48 | + \"lastName\":\"${STORAGE_MANAGER}\",\ |
| 49 | + \"email\":\"${STORAGE_MANAGER}@scality.com\",\ |
| 50 | + \"enabled\":\"true\",\ |
| 51 | + \"credentials\":${PASSWORD_CONFIGURATION},\ |
| 52 | + \"realmRoles\":[\"StorageManager\"]}" || exit 1 |
| 53 | + |
| 54 | +curl -k "${URI}/users" \ |
| 55 | + -H "${HEADER}" \ |
| 56 | + -H "Authorization: bearer $TOKEN" \ |
| 57 | + --data "{\ |
| 58 | + \"username\":\"${STORAGE_ACCOUNT_OWNER}\",\ |
| 59 | + \"firstName\":\"${STORAGE_ACCOUNT_OWNER}\",\ |
| 60 | + \"lastName\":\"${STORAGE_ACCOUNT_OWNER}\",\ |
| 61 | + \"email\":\"${STORAGE_ACCOUNT_OWNER}@scality.com\",\ |
| 62 | + \"enabled\":\"true\",\ |
| 63 | + \"credentials\":${PASSWORD_CONFIGURATION},\ |
| 64 | + \"groups\":[\"${ACCOUNT}::StorageAccountOwner\"]}" || exit 1 |
| 65 | + |
| 66 | +curl -k "${URI}/users" \ |
| 67 | + -H "${HEADER}" \ |
| 68 | + -H "Authorization: bearer $TOKEN" \ |
| 69 | + --data "{\ |
| 70 | + \"username\":\"${DATA_CONSUMER}\",\ |
| 71 | + \"firstName\":\"${DATA_CONSUMER}\",\ |
| 72 | + \"lastName\":\"${DATA_CONSUMER}\",\ |
| 73 | + \"email\":\"${DATA_CONSUMER}@scality.com\",\ |
| 74 | + \"enabled\":\"true\",\ |
| 75 | + \"credentials\":${PASSWORD_CONFIGURATION},\ |
| 76 | + \"groups\":[\"${ACCOUNT}::DataConsumer\"]}" || exit 1 |
| 77 | + |
| 78 | +curl -k "${URI}/users" \ |
| 79 | + -H "${HEADER}" \ |
| 80 | + -H "Authorization: bearer $TOKEN" \ |
| 81 | + --data "{\ |
| 82 | + \"username\":\"${DATA_ACCESSOR}\",\ |
| 83 | + \"firstName\":\"${DATA_ACCESSOR}\",\ |
| 84 | + \"lastName\":\"${DATA_ACCESSOR}\",\ |
| 85 | + \"email\":\"${DATA_ACCESSOR}@scality.com\",\ |
| 86 | + \"enabled\":\"true\",\ |
| 87 | + \"credentials\":${PASSWORD_CONFIGURATION},\ |
| 88 | + \"groups\":[\"${ACCOUNT}::DataAccessor\"]}" || exit 1 |
| 89 | + |
| 90 | +echo "Done" |
| 91 | + |
| 92 | +echo "- Attach the Storage Manager" |
| 93 | + |
| 94 | +ID=`curl -k "${URI}/users?username=${STORAGE_MANAGER}" -H "${HEADER}" -H "Authorization: bearer $TOKEN" \ |
| 95 | + | sed 's/.*id":"//g' | sed 's/".*//g'` |
| 96 | +[ -z "$ID" ] && exit 1 |
| 97 | + |
| 98 | +ROLE=`curl -k "${URI}/roles" -H "${HEADER}" -H "Authorization: bearer $TOKEN" \ |
| 99 | + | jq -r '.[] | select(.. | .name? == "StorageManager")'` |
| 100 | +[ -z "$ROLE" ] && exit 1 |
| 101 | + |
| 102 | +curl -k -X POST "${URI}/users/${ID}/role-mappings/realm" -H "${HEADER}" -H "Authorization: bearer $TOKEN" --data "[$ROLE]" || exit 1 |
| 103 | + |
| 104 | +echo "- Attach the Storage Account Owner" |
| 105 | + |
| 106 | +ID=`curl -k "${URI}/users?username=${STORAGE_ACCOUNT_OWNER}" -H "${HEADER}" -H "Authorization: bearer $TOKEN" \ |
| 107 | + | sed 's/.*id":"//g' | sed 's/".*//g'` |
| 108 | +[ -z "$ID" ] && exit 1 |
| 109 | + |
| 110 | +ROLE=`curl -k "${URI}/roles" -H "${HEADER}" -H "Authorization: bearer $TOKEN" \ |
| 111 | + | jq -r '.[] | select(.. | .name? == "'"${ACCOUNT}"'::StorageAccountOwner")'` |
| 112 | +[ -z "$ROLE" ] && exit 1 |
| 113 | + |
| 114 | +curl -k -X POST "${URI}/users/${ID}/role-mappings/realm" -H "${HEADER}" -H "Authorization: bearer $TOKEN" --data "[$ROLE]" || exit 1 |
| 115 | + |
| 116 | +echo "- Attach the Data Consumer" |
| 117 | + |
| 118 | +ID=`curl -k "${URI}/users?username=${DATA_CONSUMER}" -H "${HEADER}" -H "Authorization: bearer $TOKEN" \ |
| 119 | + | sed 's/.*id":"//g' | sed 's/".*//g'` |
| 120 | +[ -z "$ID" ] && exit 1 |
| 121 | + |
| 122 | +ROLE=`curl -k "${URI}/roles" -H "${HEADER}" -H "Authorization: bearer $TOKEN" \ |
| 123 | + | jq -r '.[] | select(.. | .name? == "'"${ACCOUNT}"'::DataConsumer")'` |
| 124 | +[ -z "$ROLE" ] && exit 1 |
| 125 | + |
| 126 | +curl -k -X POST "${URI}/users/${ID}/role-mappings/realm" -H "${HEADER}" -H "Authorization: bearer $TOKEN" --data "[$ROLE]" || exit 1 |
| 127 | + |
| 128 | +echo "- Attach the Data Accessor" |
| 129 | + |
| 130 | +ID=`curl -k "${URI}/users?username=${DATA_ACCESSOR}" -H "${HEADER}" -H "Authorization: bearer $TOKEN" \ |
| 131 | + | sed 's/.*id":"//g' | sed 's/".*//g'` |
| 132 | +[ -z "$ID" ] && exit 1 |
| 133 | + |
| 134 | +ROLE=`curl -k "${URI}/roles" -H "${HEADER}" -H "Authorization: bearer $TOKEN" \ |
| 135 | + | jq -r '.[] | select(.. | .name? == "'"${ACCOUNT}"'::DataAccessor")'` |
| 136 | +[ -z "$ROLE" ] && exit 1 |
| 137 | + |
| 138 | +curl -k -X POST "${URI}/users/${ID}/role-mappings/realm" -H "${HEADER}" -H "Authorization: bearer $TOKEN" --data "[$ROLE]" || exit 1 |
| 139 | + |
| 140 | +echo "Done" |
0 commit comments