Buku Tamu SSO

curl (Testing Manual)

Uji alur OAuth secara manual dengan curl.

Langkah 1: Generate PKCE Values

# Generate code_verifier (43-128 karakter)
CODE_VERIFIER=$(openssl rand -base64 64 | tr -d '=+/' | head -c 64)
echo "Code Verifier: $CODE_VERIFIER"

# Generate code_challenge (S256)
CODE_CHALLENGE=$(echo -n "$CODE_VERIFIER" | openssl dgst -sha256 -binary | base64 | tr '+/' '-_' | tr -d '=')
echo "Code Challenge: $CODE_CHALLENGE"

# Generate state
STATE=$(openssl rand -base64 32 | tr -d '=+/' | head -c 32)
echo "State: $STATE"

Langkah 2: Buat Authorization URL

# Konfigurasi
CLIENT_ID="YOUR_CLIENT_ID"
REDIRECT_URI="http://localhost:3000/callback"
# Origin — endpoint OAuth = ${AUTH_SERVER_URL}/api/auth/oauth2/...
# Issuer OIDC (untuk library / validasi iss) = ${AUTH_SERVER_URL}/api/auth
AUTH_SERVER_URL="https://bukutamu.tabalongkab.go.id"
ISSUER="${AUTH_SERVER_URL}/api/auth"
SCOPE="openid profile email role organization"

# Buat URL (buka di browser)
AUTH_URL="${AUTH_SERVER_URL}/api/auth/oauth2/authorize?\
client_id=${CLIENT_ID}&\
redirect_uri=${REDIRECT_URI}&\
response_type=code&\
scope=${SCOPE// /%20}&\
state=${STATE}&\
code_challenge=${CODE_CHALLENGE}&\
code_challenge_method=S256"

echo "Buka URL ini di browser:"
echo "$AUTH_URL"

Langkah 3: Tukar Code dengan Token

Setelah user login dan consent, Anda akan mendapat redirect dengan code parameter.

# Ganti dengan authorization code yang diterima
AUTHORIZATION_CODE="code_dari_callback"
CLIENT_SECRET="YOUR_CLIENT_SECRET"

# Request token
curl -X POST "${AUTH_SERVER_URL}/api/auth/oauth2/token" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "grant_type=authorization_code" \
  -d "code=${AUTHORIZATION_CODE}" \
  -d "redirect_uri=${REDIRECT_URI}" \
  -d "client_id=${CLIENT_ID}" \
  -d "client_secret=${CLIENT_SECRET}" \
  -d "code_verifier=${CODE_VERIFIER}"

Langkah 4: Ambil User Info

# Ganti dengan access token yang diterima
ACCESS_TOKEN="access_token_dari_response"

curl -X GET "${AUTH_SERVER_URL}/api/auth/oauth2/userinfo" \
  -H "Authorization: Bearer ${ACCESS_TOKEN}"

Langkah 5: Refresh Token

# Ganti dengan refresh token yang diterima
REFRESH_TOKEN="refresh_token_dari_response"

curl -X POST "${AUTH_SERVER_URL}/api/auth/oauth2/token" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "grant_type=refresh_token" \
  -d "refresh_token=${REFRESH_TOKEN}" \
  -d "client_id=${CLIENT_ID}" \
  -d "client_secret=${CLIENT_SECRET}"

On this page