• Pesan
  • Managed Agents
  • Admin
Search...
⌘K
Organisasi
Admin APIWorkspace
Autentikasi
IkhtisarWorkload Identity FederationReferensi WIF
AWSGoogle CloudMicrosoft AzureGitHub ActionsKubernetesSPIFFEOkta
Pemantauan
Usage and Cost APIRate Limits APIClaude Code Analytics API
Data & kepatuhan
Residensi dataAPI dan retensi data
Compliance API
IkhtisarDapatkan aksesFeed AktivitasObrolan, file, dan proyekOrganisasi, pengguna, peran, dan grupRancang integrasi AndaKesalahanFAQ
Log in
Microsoft Azure
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...

Solutions

  • AI agents
  • Code modernization
  • Coding
  • Customer support
  • Education
  • Financial services
  • Government
  • Life sciences

Partners

  • Amazon Bedrock
  • Google Cloud's Vertex AI

Learn

  • Blog
  • Courses
  • Use cases
  • Connectors
  • Customer stories
  • Engineering at Anthropic
  • Events
  • Powered by Claude
  • Service partners
  • Startups program

Company

  • Anthropic
  • Careers
  • Economic Futures
  • Research
  • News
  • Responsible Scaling Policy
  • Security and compliance
  • Transparency

Learn

  • Blog
  • Courses
  • Use cases
  • Connectors
  • Customer stories
  • Engineering at Anthropic
  • Events
  • Powered by Claude
  • Service partners
  • Startups program

Help and security

  • Availability
  • Status
  • Support
  • Discord

Terms and policies

  • Privacy policy
  • Responsible disclosure policy
  • Terms of service: Commercial
  • Terms of service: Consumer
  • Usage policy
Admin/Penyedia identitas

Menggunakan WIF dengan Microsoft Azure

Federasikan managed identity Azure dan Entra Workload Identity dengan Claude API sehingga workload Azure Anda dapat memanggil Claude tanpa kunci API statis.

Workload Azure melakukan autentikasi ke Claude API dengan menyajikan JSON Web Token (JWT) yang diterbitkan oleh Microsoft Entra ID, lalu menukarnya dengan access token Anthropic berumur pendek. Ada dua cara umum untuk memperoleh token yang diterbitkan Entra:

  • Managed identity (VM, App Service, Functions, Container Apps): Workload memanggil Azure Instance Metadata Service (IMDS) di http://169.254.169.254/metadata/identity/oauth2/token dan menerima JWT untuk identitas yang ditetapkan padanya.
  • Entra Workload Identity (pod AKS): Kubernetes memproyeksikan token service account (ditandatangani oleh OIDC issuer klaster AKS) ke dalam pod pada path yang tercantum di AZURE_FEDERATED_TOKEN_FILE. Workload menukar token tersebut di Entra untuk mendapatkan access token yang diterbitkan Entra.

Dalam kedua kasus tersebut, token yang diterbitkan Entra yang Anda sajikan ke Anthropic membawa issuer Entra spesifik tenant (langkah Konfigurasi Anthropic di bawah menunjukkan URL persis yang harus didaftarkan) dan object ID dari managed identity pada klaim sub dan oid. Anda mendaftarkan issuer tersebut ke Anthropic satu kali, menulis federation rule yang mencocokkan klaim yang diharapkan, dan workload Anda menukar token Entra-nya dengan access token sk-ant-oat01-... saat runtime.

Pod AKS dapat secara alternatif melewati pertukaran Entra dan menyajikan token service account yang diproyeksikan Kubernetes langsung ke Anthropic. Jalur tersebut mendaftarkan OIDC issuer klaster AKS Anda ke Anthropic alih-alih tenant Entra Anda. Lihat Kubernetes untuk alur tersebut.

Prasyarat

  • Pemahaman tentang konsep WIF: service account, federation issuer, dan federation rule.
  • Langganan Azure dengan izin untuk menetapkan managed identity (atau mengonfigurasi Entra Workload Identity pada AKS).
  • Tenant ID Microsoft Entra Anda. Temukan di portal Azure pada Microsoft Entra ID → Overview → Tenant ID.
  • Izin untuk membuat service account, federation issuer, dan federation rule di Claude Console untuk organisasi Anthropic Anda.

Konfigurasi Azure

Siapkan identitas yang akan diterbitkan tokennya oleh Azure. Pilih jalur yang sesuai dengan tempat workload Anda berjalan.

Klaim token

Token yang diterbitkan Entra untuk managed identity membawa klaim-klaim berikut:

{
  "iss": "https://login.microsoftonline.com/<TENANT_ID>/v2.0",
  "sub": "9f8e7d6c-1a2b-3c4d-5e6f-...",
  "aud": "https://api.anthropic.com",
  "oid": "9f8e7d6c-1a2b-3c4d-5e6f-...",
  "tid": "<TENANT_ID>",
  "azp": "<CLIENT_ID>",
  "exp": 1775527120
}

sub dan oid identik (object ID dari managed identity). azp adalah application atau client ID. Cocokkan pada oid untuk mengotorisasi satu identitas spesifik, atau pada azp untuk mengotorisasi identitas apa pun yang terkait dengan registrasi aplikasi. Klaim tid mengulangi tenant ID Anda; mencocokkan pada klaim ini merupakan lapisan pertahanan tambahan, karena URL issuer sudah mengunci tenant.

Konfigurasi Anthropic

Ikuti panduan penyiapan untuk mendaftarkan federation issuer, membuat service account Anthropic, dan membuat federation rule di Claude Console. Di Console, pilih opsi provider OIDC dan berikan nilai-nilai spesifik Entra berikut.

Federation issuer: Entra memublikasikan dokumen OIDC discovery pada URL issuer per-tenant, jadi gunakan mode discovery. Setiap tenant Azure yang Anda federasikan memerlukan record issuer tersendiri.

{
  "name": "azure-prod-tenant",
  "issuer_url": "https://login.microsoftonline.com/<TENANT_ID>/v2.0",
  "jwks_source": "discovery"
}

Tergantung pada versi token, klaim iss mungkin berupa https://sts.windows.net/<TENANT_ID>/. Decode token managed identity Anda (bagian Verifikasi di bawah menunjukkan caranya) dan daftarkan nilai iss mana pun yang terkandung di dalamnya. Kedua URL tersebut berbagi JWKS yang sama, sehingga mode discovery berfungsi untuk keduanya.

Federation rule: Cocokkan pada object ID managed identity dan tenant ID Anda.

{
  "name": "azure-inference-worker",
  "issuer_id": "fdis_...",
  "match": {
    "audience": "https://api.anthropic.com",
    "claims": {
      "oid": "9f8e7d6c-1a2b-3c4d-5e6f-...",
      "tid": "<TENANT_ID>"
    }
  },
  "target": {
    "type": "service_account",
    "service_account_id": "svac_..."
  },
  "workspace_id": "wrkspc_...",
  "oauth_scope": "workspace:developer",
  "token_lifetime_seconds": 600
}

Memperoleh dan menggunakan token

Saat runtime, workload Anda mengambil token Entra-nya, menukarnya di POST /v1/oauth/token, dan menggunakan bearer token yang dikembalikan untuk memanggil Claude. Setiap SDK Anthropic menangani pertukaran dan loop refresh ketika Anda menyediakan callable token-provider, seperti yang ditunjukkan dalam contoh-contoh berikut. Tab cURL menunjukkan alur mentahnya.

import os

import anthropic
import requests
from anthropic import WorkloadIdentityCredentials

IMDS_URL = "http://169.254.169.254/metadata/identity/oauth2/token"


def fetch_entra_token() -> str:
    """Fetch a managed identity token from Azure IMDS."""
    response = requests.get(
        IMDS_URL,
        headers={"Metadata": "true"},
        params={"api-version": "2018-02-01", "resource": "https://api.anthropic.com"},
        timeout=5,
    )
    response.raise_for_status()
    return response.json()["access_token"]


client = anthropic.Anthropic(
    credentials=WorkloadIdentityCredentials(
        identity_token_provider=fetch_entra_token,
        federation_rule_id=os.environ["ANTHROPIC_FEDERATION_RULE_ID"],
        organization_id=os.environ["ANTHROPIC_ORGANIZATION_ID"],
        service_account_id=os.environ["ANTHROPIC_SERVICE_ACCOUNT_ID"],
        workspace_id=os.environ.get("ANTHROPIC_WORKSPACE_ID"),
    ),
)

message = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Hello from Azure"}],
)
print(message.content[0].text)

Pada AKS dengan Entra Workload Identity

Pada AKS, file di AZURE_FEDERATED_TOKEN_FILE adalah token service account yang diproyeksikan Kubernetes dan ditandatangani oleh OIDC issuer klaster Anda, bukan token yang diterbitkan Entra. Untuk tetap pada jalur yang dimediasi Entra seperti yang dijelaskan di halaman ini, tukarkan token tersebut di https://login.microsoftonline.com/<TENANT_ID>/oauth2/v2.0/token (grant client_credentials federated) terlebih dahulu, lalu teruskan access token Entra yang dihasilkan ke SDK Anthropic sebagai identity token.

import os
from pathlib import Path
import httpx
import anthropic
from anthropic import WorkloadIdentityCredentials


def fetch_entra_token_via_federation() -> str:
    federated_token = Path(os.environ["AZURE_FEDERATED_TOKEN_FILE"]).read_text()
    response = httpx.post(
        f"https://login.microsoftonline.com/{os.environ['AZURE_TENANT_ID']}/oauth2/v2.0/token",
        data={
            "client_id": os.environ["AZURE_CLIENT_ID"],
            "grant_type": "client_credentials",
            "scope": "https://api.anthropic.com/.default",
            "client_assertion_type": "urn:ietf:params:oauth:client-assertion-type:jwt-bearer",
            "client_assertion": federated_token,
        },
    )
    response.raise_for_status()
    return response.json()["access_token"]


client = anthropic.Anthropic(
    credentials=WorkloadIdentityCredentials(
        identity_token_provider=fetch_entra_token_via_federation,
        federation_rule_id=os.environ["ANTHROPIC_FEDERATION_RULE_ID"],
        organization_id=os.environ["ANTHROPIC_ORGANIZATION_ID"],
        service_account_id=os.environ["ANTHROPIC_SERVICE_ACCOUNT_ID"],
        workspace_id=os.environ.get("ANTHROPIC_WORKSPACE_ID"),
    ),
)

message = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Hello from Azure"}],
)
print(message.content[0].text)

Sebagai alternatif, daftarkan OIDC issuer klaster AKS Anda ke Anthropic secara langsung dan lewati langkah Entra. Lihat Kubernetes untuk pola tersebut.

Verifikasi penyiapan

Dari resource Azure Anda, jalankan pertukaran cURL yang ditunjukkan sebelumnya dan pastikan bahwa POST /v1/oauth/token mengembalikan 200 dengan access_token yang diawali sk-ant-oat01- dan nilai expires_in dalam detik. Pada 400 invalid_grant, lihat Memecahkan masalah pertukaran yang gagal; penyebab paling umum di sisi Azure adalah ketidakcocokan antara issuer_url yang Anda daftarkan dan klaim iss dalam token Anda yang telah di-decode. Keduanya harus cocok persis. Untuk token managed identity, nilai iss adalah https://login.microsoftonline.com/<TENANT_ID>/v2.0 atau https://sts.windows.net/<TENANT_ID>/.

Batasi cakupan rule Anda

Klaim oid adalah GUID dari managed identity dan tidak memiliki prefiks yang stabil. subject_prefix dengan * mencocokkan identitas sembarang dalam tenant, sehingga workload apa pun yang memegang managed identity dapat memperoleh token Anthropic yang difederasikan.

Kunci blok match pada rule ke cakupan tersempit yang sesuai dengan kasus penggunaan Anda:

  • Cocokkan oid sebagai nilai persis: Atur claims.oid ke object ID lengkap dari managed identity dan jangan pernah gunakan subject_prefix untuk token Azure.
  • Kunci tid sebagai lapisan pertahanan tambahan: URL issuer sudah mengunci tenant Anda, tetapi menambahkan claims.tid melindungi dari pergeseran konfigurasi jika record issuer diedit di kemudian hari.
  • Kunci audience: Atur audience ke https://api.anthropic.com sehingga token yang dibuat untuk resource lain ditolak.
  • Gunakan rule terpisah per managed identity: Buat satu rule per identitas alih-alih satu rule yang mengotorisasi beberapa identitas, sehingga Anda dapat mencabut akses satu workload tanpa memengaruhi yang lain.

Langkah selanjutnya

  • Tinjau model konfigurasi lengkap di Workload Identity Federation.
  • Lihat panduan provider untuk AWS, Google Cloud, GitHub Actions, dan Kubernetes.
  • Untuk variabel lingkungan, file profil, dan urutan prioritas kredensial, lihat referensi WIF.

Was this page helpful?

  • Prasyarat
  • Konfigurasi Azure
  • Klaim token
  • Konfigurasi Anthropic
  • Memperoleh dan menggunakan token
  • Pada AKS dengan Entra Workload Identity
  • Verifikasi penyiapan
  • Batasi cakupan rule Anda
  • Langkah selanjutnya