vault: send oidc role payload as json
This commit is contained in:
parent
bb2a3ba904
commit
8d526e383f
@ -75,6 +75,28 @@ build_bound_claims() {
|
|||||||
printf '%s' "${json}"
|
printf '%s' "${json}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
build_json_array() {
|
||||||
|
items="$1"
|
||||||
|
json="["
|
||||||
|
first=1
|
||||||
|
old_ifs=$IFS
|
||||||
|
IFS=,
|
||||||
|
for item in $items; do
|
||||||
|
item="$(printf '%s' "$item" | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')"
|
||||||
|
if [ -z "${item}" ]; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
if [ "${first}" -eq 0 ]; then
|
||||||
|
json="${json},"
|
||||||
|
fi
|
||||||
|
json="${json}\"${item}\""
|
||||||
|
first=0
|
||||||
|
done
|
||||||
|
IFS=$old_ifs
|
||||||
|
json="${json}]"
|
||||||
|
printf '%s' "${json}"
|
||||||
|
}
|
||||||
|
|
||||||
configure_role() {
|
configure_role() {
|
||||||
role_name="$1"
|
role_name="$1"
|
||||||
role_groups="$2"
|
role_groups="$2"
|
||||||
@ -84,25 +106,24 @@ configure_role() {
|
|||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
claims="$(build_bound_claims "${groups_claim}" "${role_groups}")"
|
claims="$(build_bound_claims "${groups_claim}" "${role_groups}")"
|
||||||
claims_file="$(mktemp)"
|
|
||||||
printf '%s' "${claims}" > "${claims_file}"
|
|
||||||
scopes_csv="$(printf '%s' "${scopes}" | tr ' ' ',' | tr -s ',' | sed 's/^,//;s/,$//')"
|
scopes_csv="$(printf '%s' "${scopes}" | tr ' ' ',' | tr -s ',' | sed 's/^,//;s/,$//')"
|
||||||
role_args="user_claim=${user_claim} oidc_scopes=${scopes_csv} token_policies=${role_policies} bound_audiences=${bound_audiences} bound_claims=@${claims_file} bound_claims_type=${bound_claims_type}"
|
redirect_json="$(build_json_array "${redirect_uris}")"
|
||||||
if [ -n "${groups_claim}" ]; then
|
payload_file="$(mktemp)"
|
||||||
role_args="${role_args} groups_claim=${groups_claim}"
|
cat > "${payload_file}" <<EOF
|
||||||
fi
|
{
|
||||||
old_ifs=$IFS
|
"user_claim": "${user_claim}",
|
||||||
IFS=,
|
"oidc_scopes": "${scopes_csv}",
|
||||||
for uri in $redirect_uris; do
|
"token_policies": "${role_policies}",
|
||||||
trimmed="$(printf '%s' "$uri" | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')"
|
"bound_audiences": "${bound_audiences}",
|
||||||
if [ -n "${trimmed}" ]; then
|
"bound_claims": ${claims},
|
||||||
role_args="${role_args} allowed_redirect_uris=${trimmed}"
|
"bound_claims_type": "${bound_claims_type}",
|
||||||
fi
|
"groups_claim": "${groups_claim}",
|
||||||
done
|
"allowed_redirect_uris": ${redirect_json}
|
||||||
IFS=$old_ifs
|
}
|
||||||
|
EOF
|
||||||
log "configuring oidc role ${role_name}"
|
log "configuring oidc role ${role_name}"
|
||||||
vault write "auth/oidc/role/${role_name}" ${role_args}
|
vault write "auth/oidc/role/${role_name}" @"${payload_file}"
|
||||||
rm -f "${claims_file}"
|
rm -f "${payload_file}"
|
||||||
}
|
}
|
||||||
|
|
||||||
configure_role "admin" "${admin_group}" "${admin_policies}"
|
configure_role "admin" "${admin_group}" "${admin_policies}"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user