Skip to content

Commit 27e1910

Browse files
committed
Test both URL encodings for OIDC token exchange
1 parent f2ebb46 commit 27e1910

1 file changed

Lines changed: 24 additions & 10 deletions

File tree

.github/workflows/release.yml

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -113,23 +113,37 @@ jobs:
113113
114114
echo ""
115115
echo "=== Testing OIDC Token Exchange (Step 2: Exchange for NPM token) ==="
116-
PACKAGE_NAME=$(jq -r '.name' package.json | sed 's/^@/%40/')
117-
EXCHANGE_URL="https://registry.npmjs.org/-/npm/v1/oidc/token/exchange/package/${PACKAGE_NAME}"
118-
echo "Exchange URL: $EXCHANGE_URL"
116+
RAW_NAME=$(jq -r '.name' package.json)
117+
echo "Testing with Yarn's URL encoding (@reforge-com -> %40reforge-com)"
118+
YARN_ENCODED=$(echo "$RAW_NAME" | sed 's/^@/%40/')
119+
EXCHANGE_URL_YARN="https://registry.npmjs.org/-/npm/v1/oidc/token/exchange/package/${YARN_ENCODED}"
120+
echo "Yarn URL: $EXCHANGE_URL_YARN"
119121
120122
EXCHANGE_RESPONSE=$(curl -sSL -w "\nHTTP_STATUS:%{http_code}" \
121123
-H "Authorization: Bearer $ID_TOKEN" \
122-
-X POST "$EXCHANGE_URL" 2>&1)
124+
-X POST "$EXCHANGE_URL_YARN" 2>&1)
123125
HTTP_STATUS=$(echo "$EXCHANGE_RESPONSE" | grep "HTTP_STATUS:" | cut -d: -f2)
124126
BODY=$(echo "$EXCHANGE_RESPONSE" | sed '/HTTP_STATUS:/d')
127+
echo "Yarn encoding - HTTP Status: $HTTP_STATUS"
128+
if [[ "$HTTP_STATUS" != "200" ]]; then
129+
echo "Response: $BODY"
130+
fi
131+
132+
echo ""
133+
echo "Testing with alternate encoding (@reforge-com/cli as-is)"
134+
EXCHANGE_URL_ALT="https://registry.npmjs.org/-/npm/v1/oidc/token/exchange/package/${RAW_NAME}"
135+
echo "Alternate URL: $EXCHANGE_URL_ALT"
125136
126-
echo "HTTP Status: $HTTP_STATUS"
127-
if [[ "$HTTP_STATUS" == "200" ]]; then
128-
echo "✓ Token exchange successful!"
129-
echo "Response has 'token' field: $(echo "$BODY" | jq -r 'has("token")')"
137+
EXCHANGE_RESPONSE2=$(curl -sSL -w "\nHTTP_STATUS:%{http_code}" \
138+
-H "Authorization: Bearer $ID_TOKEN" \
139+
-X POST "$EXCHANGE_URL_ALT" 2>&1)
140+
HTTP_STATUS2=$(echo "$EXCHANGE_RESPONSE2" | grep "HTTP_STATUS:" | cut -d: -f2)
141+
BODY2=$(echo "$EXCHANGE_RESPONSE2" | sed '/HTTP_STATUS:/d')
142+
echo "Alternate encoding - HTTP Status: $HTTP_STATUS2"
143+
if [[ "$HTTP_STATUS2" == "200" ]]; then
144+
echo "✓ Token exchange successful with alternate encoding!"
130145
else
131-
echo "✗ Token exchange FAILED!"
132-
echo "Response: $BODY"
146+
echo "Response: $BODY2"
133147
fi
134148
else
135149
echo "✗ No ID token in response!"

0 commit comments

Comments
 (0)