ajout d'un script pour récup un token OAuth2

main
Gil Portenseigne 2024-05-17 10:33:04 +02:00
parent b18c2233e3
commit 5589b5dc9f
1 changed files with 62 additions and 0 deletions

View File

@ -0,0 +1,62 @@
#!/bin/bash
# Function to display usage
usage() {
echo "Usage: $0 -c <client_id> -s <client_secret> -u <token_url> [-o <scope>] [-g <grant_type>]"
exit 1
}
# Parse command line arguments
while getopts ":c:s:u:o:g:" opt; do
case $opt in
c) CLIENT_ID="$OPTARG"
;;
s) CLIENT_SECRET="$OPTARG"
;;
u) TOKEN_URL="$OPTARG"
;;
o) SCOPE="$OPTARG"
;;
g) GRANT_TYPE="$OPTARG"
;;
\?) echo "Invalid option -$OPTARG" >&2
usage
;;
esac
done
# Check required parameters
if [ -z "$CLIENT_ID" ] || [ -z "$CLIENT_SECRET" ] || [ -z "$TOKEN_URL" ]; then
usage
fi
# Set default values for optional parameters
if [ -z "$GRANT_TYPE" ]; then
GRANT_TYPE="client_credentials"
fi
# Prepare the request body
REQUEST_BODY="grant_type=${GRANT_TYPE}&client_id=${CLIENT_ID}&client_secret=${CLIENT_SECRET}"
if [ -n "$SCOPE" ]; then
REQUEST_BODY="${REQUEST_BODY}&scope=${SCOPE// /%20}"
fi
# Get the OAuth2 token
response=$(curl -s -X POST "$TOKEN_URL" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "$REQUEST_BODY")
# Extract the access token from the response
access_token=$(echo "$response" | jq -r .access_token)
# Check if the token was successfully obtained
if [ "$access_token" == "null" ]; then
echo "Failed to obtain access token"
echo "Response: $response"
exit 1
fi
# Output the access token
echo "GTOKEN = $access_token"
# Export the access token as an environment variable
export "GTOKEN=$access_token"