Create the app registration that represents the Claude API audience. changedmanage-claude/wif-providers/azure
Nearest release: v2.1.304, published under an hour after this site recorded the change. Shown because the two are within 24 hours of each other. Nothing here says the release caused the edit.
Recorded here
Lines+5added
Lines−7removed
From line
182
where the diff opens
First seen
14 Aug 2026
this site's first read of the page
Recorded edits12to this page, all time
The whole hunk
from line 182, old and new numbered
/
from line 182
182182 JSON
183183 )
184184
185 ACCESS_TOKEN=$(echo "$RESPONSE" | jq -r .access_token)
185 ACCESS_TOKEN=$(jq -r .access_token <<<"$RESPONSE")
186186
187187 # 3. Call the Claude API with the bearer token.
188188 curl https://api.anthropic.com/v1/messages \
from line 193
193193 "model": "claude-opus-5-5",
194194 "max_tokens": 1024,
195195 "messages": [{"role": "user", "content": "Hello from Azure"}]
196 }' | jq -r '.content[] | select(.type == "text") | .text'
196 }'
197197 ```
198198
199199 ```python Python
from line 597
597597 # Container Apps, fetch from "$IDENTITY_ENDPOINT?api-version=2019-08-01&resource=api://<APP_ID>"
598598 # with -H "X-IDENTITY-HEADER: $IDENTITY_HEADER" instead.
599599 # With multiple user-assigned identities, append &client_id=<IDENTITY_CLIENT_ID>.
600 ANTHROPIC_IDENTITY_TOKEN_FILE=$(mktemp)
600 export ANTHROPIC_IDENTITY_TOKEN_FILE=$(mktemp)
601601 trap 'rm -f "$ANTHROPIC_IDENTITY_TOKEN_FILE"' EXIT
602602 curl -sS -H "Metadata: true" \
603603 "http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=api://<APP_ID>" \
604604 | jq -r .access_token > "$ANTHROPIC_IDENTITY_TOKEN_FILE"
605 export ANTHROPIC_IDENTITY_TOKEN_FILE
606605
607606 # ANTHROPIC_FEDERATION_RULE_ID, ANTHROPIC_ORGANIZATION_ID,
608607 # ANTHROPIC_SERVICE_ACCOUNT_ID, and ANTHROPIC_WORKSPACE_ID are read from the environment.
from line 833
834833 "model": "claude-opus-5-5",
835834 "max_tokens": 1024,
836835 "messages": [{"role": "user", "content": "Hello from Azure"}]
837 }' | jq -r '.content[] | select(.type == "text") | .text'
836 }'
838837 ```
839838
840839 ```python Python
from line 1219
12201219 ```bash CLI
12211220 # 1. Exchange the Kubernetes-projected token for an Entra-issued access
12221221 # token and write it to a temp file the CLI can read.
1223 ANTHROPIC_IDENTITY_TOKEN_FILE=$(mktemp)
1222 export ANTHROPIC_IDENTITY_TOKEN_FILE=$(mktemp)
12241223 trap 'rm -f "$ANTHROPIC_IDENTITY_TOKEN_FILE"' EXIT
12251224 curl -sS "https://login.microsoftonline.com/$AZURE_TENANT_ID/oauth2/v2.0/token" \
12261225 -d client_id="$AZURE_CLIENT_ID" \
from line 1228
12291228 -d client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer \
12301229 --data-urlencode client_assertion@"$AZURE_FEDERATED_TOKEN_FILE" \
12311230 | jq -r .access_token > "$ANTHROPIC_IDENTITY_TOKEN_FILE"
1232 export ANTHROPIC_IDENTITY_TOKEN_FILE
12331231
12341232 # 2. Call the Claude API. ANTHROPIC_FEDERATION_RULE_ID,
12351233 # ANTHROPIC_ORGANIZATION_ID, ANTHROPIC_SERVICE_ACCOUNT_ID, and ANTHROPIC_WORKSPACE_ID are read
No line in this hunk matches that.