@@ -100,16 +100,42 @@ jobs:
100100 echo "Yarn registry config:"
101101 cat .yarnrc.yml
102102 echo ""
103- echo "=== Testing OIDC Token Fetch ==="
103+ echo "=== Testing OIDC Token Fetch (Step 1: Get ID Token) ==="
104104 if [[ -n "$ACTIONS_ID_TOKEN_REQUEST_URL" && -n "$ACTIONS_ID_TOKEN_REQUEST_TOKEN" ]]; then
105- echo "Attempting to fetch OIDC token for audience: npm:registry.npmjs.org"
105+ echo "Attempting to fetch OIDC ID token for audience: npm:registry.npmjs.org"
106106 RESPONSE=$(curl -sSL -H "Authorization: bearer $ACTIONS_ID_TOKEN_REQUEST_TOKEN" \
107107 "${ACTIONS_ID_TOKEN_REQUEST_URL}&audience=npm:registry.npmjs.org" 2>&1)
108108 if [[ $? -eq 0 ]]; then
109- echo "Token fetch successful!"
110- echo "Response contains 'value' field: $(echo "$RESPONSE" | jq -r 'has("value")')"
109+ echo "✓ ID token fetch successful!"
110+ ID_TOKEN=$(echo "$RESPONSE" | jq -r '.value')
111+ if [[ "$ID_TOKEN" != "null" && -n "$ID_TOKEN" ]]; then
112+ echo "✓ ID token extracted (length: ${#ID_TOKEN})"
113+
114+ echo ""
115+ 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"
119+
120+ EXCHANGE_RESPONSE=$(curl -sSL -w "\nHTTP_STATUS:%{http_code}" \
121+ -H "Authorization: Bearer $ID_TOKEN" \
122+ -X POST "$EXCHANGE_URL" 2>&1)
123+ HTTP_STATUS=$(echo "$EXCHANGE_RESPONSE" | grep "HTTP_STATUS:" | cut -d: -f2)
124+ BODY=$(echo "$EXCHANGE_RESPONSE" | sed '/HTTP_STATUS:/d')
125+
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")')"
130+ else
131+ echo "✗ Token exchange FAILED!"
132+ echo "Response: $BODY"
133+ fi
134+ else
135+ echo "✗ No ID token in response!"
136+ fi
111137 else
112- echo "Token fetch FAILED!"
138+ echo "✗ ID token fetch FAILED!"
113139 echo "Error: $RESPONSE"
114140 fi
115141 else
0 commit comments