Okta dapat bertindak sebagai penyedia identitas workload dengan menerbitkan token akses OIDC ke aplikasi layanan melalui grant client_credentials OAuth 2.0. Workload Anda melakukan autentikasi ke Okta (biasanya dengan private_key_jwt, sehingga tidak ada rahasia bersama yang disimpan), menerima JSON Web Token (JWT) yang ditandatangani, dan menukarkan JWT tersebut dengan Anthropic untuk mendapatkan token akses berumur pendek.
URL issuer dari authorization server Okta memiliki bentuk https://<your-domain>.okta.com/oauth2/<auth-server-id>. Jika Anda menggunakan server default bawaan, path-nya adalah /oauth2/default.
Anda harus menggunakan custom authorization server Okta (termasuk yang default). Token yang diterbitkan langsung oleh Okta org authorization server (endpoint /oauth2/v1/token tanpa ID authorization server di path) tidak dapat divalidasi oleh pihak eksternal karena Okta tidak memublikasikan kunci penandatanganan untuk token tersebut.
Ada banyak cara untuk mengonfigurasi dan melakukan autentikasi ke Okta yang berada di luar cakupan dokumentasi ini. Pastikan konfigurasi dan mekanisme autentikasi Anda mengikuti panduan dan praktik keamanan perusahaan Anda.
/v1/token Okta dan menjangkau api.anthropic.com.Secara garis besar, Anda perlu:
Navigasi yang tepat bergantung pada konfigurasi org Okta dan versi admin console Anda. Langkah-langkah bernomor berikut memandu Anda melalui salah satu jalur yang umum:
private_key_jwt) dan daftarkan JWK publik workload Anda. Sebagai alternatif, gunakan client secret jika lingkungan Anda dapat menyimpannya dengan aman. Untuk contoh berikut, Anda mungkin perlu menonaktifkan persyaratan DPoP pada aplikasi; pastikan penyiapan produksi Anda mematuhi persyaratan keamanan organisasi Anda.https://api.anthropic.com sehingga token akses yang diterbitkan membawa klaim aud tersebut. Anthropic memvalidasi aud terhadap nilai tetap ini.anthropic.access). Okta menolak permintaan client_credentials yang tidak menyertakan scope yang diberikan.Untuk aplikasi layanan yang menggunakan client_credentials, Okta menetapkan klaim sub dari token akses yang diterbitkan ke Client ID aplikasi, dan iss ke URL issuer authorization server.
Di Claude Console, buka Settings → Workload identity, klik Connect workload, dan pilih Custom OIDC. Wizard akan memandu Anda melalui pendaftaran issuer, pembuatan service account, dan pembuatan federation rule.
Wizard ini membuat sumber daya tersebut untuk Anda. Gunakan nilai-nilai berikut baik saat Anda memasukkannya di wizard maupun saat mengirimkannya ke Admin API:
Federation issuer: Gunakan URL custom authorization server Okta Anda dan mode discovery. Anthropic membaca dokumen discovery .well-known/openid-configuration Okta dan mengambil JWKS dari jwks_uri yang diiklankan.
{
"name": "okta-prod",
"issuer_url": "https://acme.okta.com/oauth2/aus1a2b3c4d5e6f7g8h9",
"jwks": { "type": "discovery" }
}Federation rule: Cocokkan pada klaim sub Okta, yang merupakan Client ID aplikasi layanan. Jika Anda mendefinisikan klaim kustom di Okta, Anda dapat mencocokkan berdasarkan klaim tersebut dengan map claims atau condition CEL.
{
"name": "okta-pipeline",
"issuer_id": "fdis_...",
"match": {
"subject_prefix": "0oa1b2c3d4e5f6g7h8i9",
"audience": "https://api.anthropic.com"
},
"target": { "type": "service_account", "service_account_id": "svac_..." },
"workspace_id": "wrkspc_...",
"oauth_scope": "workspace:developer",
"token_lifetime_seconds": 600
}Tidak seperti penyedia native platform (AWS, Google Cloud, Kubernetes), yang menyediakan token di dalam runtime workload (melalui file yang diproyeksikan atau endpoint metadata lokal), Okta tidak melakukannya. Workload Anda harus memanggil endpoint token Okta untuk memperoleh JWT, lalu meneruskan JWT tersebut ke SDK Anthropic sebagai token identitas.
import os
import httpx
import anthropic
from anthropic import WorkloadIdentityCredentials
def fetch_okta_token() -> str:
response = httpx.post(
f"{os.environ['OKTA_ISSUER']}/v1/token",
data={
"grant_type": "client_credentials",
"scope": "anthropic.access",
"client_assertion_type": "urn:ietf:params:oauth:client-assertion-type:jwt-bearer",
# Buat JWT client_assertion RFC 7523 yang ditandatangani dengan kunci privat aplikasi Okta Anda
"client_assertion": build_signed_client_assertion(),
},
)
response.raise_for_status()
return response.json()["access_token"]
client = anthropic.Anthropic(
credentials=WorkloadIdentityCredentials(
identity_token_provider=fetch_okta_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, Claude"}],
)
print(message.content[0].text)Setiap tab SDK menunjukkan pola callable: SDK Anthropic memanggil penyedia token identitas Anda lagi setiap kali token akses Anthropic mendekati kedaluwarsa, sehingga fetcher Okta Anda harus mengembalikan token baru pada setiap panggilan alih-alih menyimpannya dalam cache tanpa batas waktu. CLI ant membaca ulang ANTHROPIC_IDENTITY_TOKEN_FILE pada setiap pertukaran, jadi perbarui file tersebut secara berkala untuk shell yang berjalan lama.
Pertukaran yang berhasil mengembalikan access_token yang diawali dengan sk-ant-oat01- dan nilai expires_in dalam detik. Pada 400 invalid_grant, lihat Memecahkan masalah pertukaran yang gagal; penyebab paling umum di sisi Okta adalah ketidakcocokan issuer_url (harus menyertakan path /oauth2/<auth-server-id>; Okta org authorization server tidak dapat digunakan).
Beberapa aplikasi layanan di bawah authorization server Okta yang sama berbagi
issuer yang sama. Aturan yang menghilangkan subject_prefix akan cocok dengan setiap aplikasi layanan di
server tersebut, sehingga tim mana pun yang dapat mendaftarkan satu aplikasi dapat memperoleh token Anthropic
yang difederasikan.
Kunci blok match aturan ke cakupan tersempit yang sesuai dengan kasus penggunaan Anda:
subject_prefix ke Client ID lengkap aplikasi layanan tanpa * di akhir.audience yang Anda konfigurasikan pada authorization server sehingga token yang dibuat untuk audience berbeda akan ditolak.claims aturan atau condition CEL.Was this page helpful?