Claude Platform Docs
AmministrazioneAutenticazione

Riferimento WIF

Variabili d'ambiente, regole di convalida, configurazione dei profili e riferimento agli errori per Workload Identity Federation.

Questa pagina raccoglie le superfici di configurazione, i vincoli di convalida e le mappature degli errori per Workload Identity Federation. Per le procedure guidate di configurazione, consulta le guide dei provider.

Richiesta di scambio del token

POST /v1/oauth/token accetta un corpo JSON che utilizza il grant jwt-bearer di RFC 7523. L'SDK costruisce questa richiesta per te a partire dalle variabili d'ambiente; gli esempi cURL in ciascuna guida dei provider mostrano il corpo grezzo.

CampoObbligatorioDescrizione
grant_typeSìSempre urn:ietf:params:oauth:grant-type:jwt-bearer.
assertionSìIl JWT OIDC emesso dal tuo provider di identità.
federation_rule_idSìID con tag (fdrl_...) della regola di federazione da valutare.
organization_idSìUUID della tua organizzazione Anthropic.
service_account_idSìID con tag (svac_...) dell'account di servizio di destinazione.
workspace_idCondizionaleID con tag (wrkspc_...) del workspace a cui limitare l'ambito del token emesso. Obbligatorio quando la regola è abilitata per più di un workspace. Se omesso, il server seleziona l'unico workspace abilitato della regola. Anche il valore letterale default funziona per il Default Workspace dell'organizzazione, ma è deprecato; usa l'ID wrkspc_... di quel workspace.

Risposta dello scambio del token

POST /v1/oauth/token restituisce una risposta token OAuth 2.0 standard (RFC 6749 §5.1):

CampoTipoDescrizione
access_tokenstringIl token Anthropic di breve durata, con prefisso sk-ant-oat01-.... Passalo come Authorization: Bearer <token>.
token_typestringSempre Bearer.
expires_inintegerSecondi mancanti alla scadenza del token.
scopestringL'ambito OAuth concesso dalla regola corrispondente.

Variabili d'ambiente

L'SDK legge queste variabili per eseguire uno scambio di token federato senza argomenti del costruttore.

VariabileObbligatoriaDescrizioneEsempio
ANTHROPIC_FEDERATION_RULE_IDSìID con tag della regola di federazione da valutare.fdrl_...
ANTHROPIC_ORGANIZATION_IDSìUUID della tua organizzazione Anthropic. Lo trovi nella pagina Organization (platform.claude.com/settings/organization) nella Claude Console.00000000-0000-0000-0000-000000000000
ANTHROPIC_IDENTITY_TOKEN_FILEUna tra _TOKEN_FILE o _TOKENPercorso nel filesystem del JWT emesso dal tuo "identity provider" (provider di identità), o IdP. L'SDK rilegge questo file a ogni scambio, in modo che i token proiettati che ruotano su disco siano sempre aggiornati./var/run/secrets/anthropic.com/token
ANTHROPIC_IDENTITY_TOKENUna tra _TOKEN_FILE o _TOKENIl JWT letterale come stringa. Usala quando la tua piattaforma inietta il token come variabile d'ambiente anziché come file.eyJhbGciOiJSUzI1NiIs...
ANTHROPIC_SERVICE_ACCOUNT_IDSìID con tag dell'account di servizio Anthropic di destinazione per conto del quale agisce il token di accesso emesso.svac_...
ANTHROPIC_WORKSPACE_IDCondizionaleID con tag del workspace a cui limitare l'ambito del token emesso. Obbligatoria quando la regola di federazione è abilitata per più di un workspace; facoltativa quando la regola è associata a un singolo workspace. Il token emesso è limitato a questo workspace al momento dello scambio, quindi cambiare workspace richiede un nuovo scambio. Anche il valore letterale default funziona per il Default Workspace, ma è deprecato; usa il suo ID wrkspc_....wrkspc_...
ANTHROPIC_PROFILENoNome di un profilo di configurazione da caricare. Ha la precedenza sulle variabili d'ambiente di federazione in questa tabella.staging-profile

Il percorso di federazione diretto tramite variabili d'ambiente si attiva solo quando ANTHROPIC_FEDERATION_RULE_ID, ANTHROPIC_ORGANIZATION_ID, ANTHROPIC_SERVICE_ACCOUNT_ID e una tra ANTHROPIC_IDENTITY_TOKEN_FILE o ANTHROPIC_IDENTITY_TOKEN sono tutte impostate. ANTHROPIC_WORKSPACE_ID viene letta insieme a queste, ma non condiziona l'attivazione.

Precedenza delle credenziali

L'SDK risolve le credenziali in questo ordine. Vince la prima fonte che fornisce una credenziale.

OrdineFonteNote
1Argomento del costruttore (api_key=, auth_token=, credentials=)Ha sempre la precedenza su tutto il resto.
2ANTHROPIC_API_KEY o ANTHROPIC_AUTH_TOKENOscura completamente la federazione. Rimuovile quando esegui la migrazione dalle chiavi API.
3ANTHROPIC_PROFILECarica <config_dir>/configs/<name>.json. Un profilo con nome mancante è un errore, non un passaggio alla fonte successiva.
4Variabili d'ambiente di federazioneANTHROPIC_FEDERATION_RULE_ID + ANTHROPIC_ORGANIZATION_ID + ANTHROPIC_SERVICE_ACCOUNT_ID + ANTHROPIC_IDENTITY_TOKEN[_FILE].
5Profilo attivoRisolto da <config_dir>/active_config, con fallback a un profilo denominato default.

Nella CLI ant, le impostazioni per Claude Models on Google Cloud (Anthropic managed) hanno una priorità inferiore rispetto alle variabili d'ambiente di federazione e superiore rispetto al profilo attivo. Le impostazioni sono il progetto, l'ID del workspace e la località. Puoi impostarle con i flag --google-cloud-* o con le variabili ANTHROPIC_GOOGLE_CLOUD_*. La CLI usa queste impostazioni quando almeno una di esse è impostata. Con queste impostazioni, la CLI ottiene le proprie credenziali da Google Application Default Credentials.

Quando viene caricato un profilo, le variabili d'ambiente compilano i campi che il profilo omette, ma non sovrascrivono mai i campi che il profilo imposta esplicitamente. Ad esempio, ANTHROPIC_WORKSPACE_ID compila workspace_id solo quando il profilo attivo non lo imposta.

File di configurazione del profilo

Un profilo è un file di configurazione con nome che viene letto sia dall'SDK sia dalla CLI ant. I profili ti consentono di distribuire i parametri di federazione con l'immagine del container o di passare da un ambiente all'altro senza modificare il codice.

Directory di configurazione

L'SDK individua la directory di configurazione in questo ordine:

  1. $ANTHROPIC_CONFIG_DIR
  2. ~/.config/anthropic su Linux e macOS
  3. %APPDATA%\Anthropic su Windows

Profilo attivo

Il nome del profilo attivo viene risolto in questo ordine:

  1. $ANTHROPIC_PROFILE
  2. Il contenuto di <config_dir>/active_config (un file di una riga scritto da ant profile activate <name>)
  3. Il nome letterale default

Claude Code e il Claude Agent SDK rispettano lo stesso ordine di risoluzione, quindi un profilo di federazione configurato qui autentica anche questi strumenti senza configurazione aggiuntiva.

Struttura dei file

PercorsoContenutoSensibilità
<config_dir>/configs/<profile>.jsonversion, il blocco authentication, organization_id, workspace_id e base_url.Non segreto. Può essere sottoposto a commit o incluso in un'immagine in sicurezza.
<config_dir>/credentials/<profile>.jsonversion, l'access_token memorizzato nella cache, expires_at e (per l'accesso interattivo) refresh_token.Segreto. Scritto dall'SDK con modalità 0600.

Sia il file di configurazione sia il file delle credenziali contengono un campo stringa version di primo livello nel formato major.minor (attualmente "1.0"). L'SDK scrive questo campo automaticamente in modo che le versioni future possano rilevare e migrare i formati precedenti; omettilo quando scrivi una configurazione a mano e l'SDK tratterà il file come versione corrente.

Esempio di profilo di federazione

configs/production.json
{
  "version": "1.0",
  "authentication": {
    "type": "oidc_federation",
    "federation_rule_id": "fdrl_...",
    "service_account_id": "svac_...",
    "identity_token": {
      "source": "file",
      "path": "/var/run/secrets/anthropic.com/token"
    }
  },
  "organization_id": "00000000-0000-0000-0000-000000000000",
  "workspace_id": "wrkspc_...",
  "base_url": "https://api.anthropic.com"
}

Se authentication.identity_token viene omesso, l'SDK ricorre a ANTHROPIC_IDENTITY_TOKEN_FILE o ANTHROPIC_IDENTITY_TOKEN dall'ambiente.

Ambiti OAuth

L'oauth_scope impostato su una regola di federazione determina quali endpoint della Claude API può chiamare il token di accesso emesso.

AmbitoConcede l'accesso a
workspace:developerTutti gli endpoint non amministrativi della Claude API nel workspace della regola: Messages (inclusi streaming e conteggio dei token), Models, Managed Agents e le relative sessioni, Files e Skills. Corrisponde all'accesso di cui dispone una chiave API di workspace nello stesso workspace.
workspace:inferenceGli endpoint di inferenza nel workspace della regola: Messages (inclusi streaming e conteggio dei token), Models e l'endpoint di chat compatibile con OpenAI. Usalo per carichi di lavoro che devono solo chiamare Claude e non devono mai gestire Files, Skills o altre risorse.
workspace:manage_tunnelsL'API dei tunnel MCP: creare, elencare e ottenere tunnel, registrare e archiviare certificati CA, rivelare e ruotare il token del tunnel e archiviare tunnel. La finestra modale di creazione del tunnel della Console blocca questo ambito quando crei una regola da essa.
org:adminAccesso completo all'Admin API (membri dell'organizzazione, inviti, workspace, chiavi API e il resto). Un token OAuth org:admin può creare o modificare solo regole con ambito workspace:developer o workspace:inference e non può aggiornare un issuer che supporta una regola con qualsiasi altro ambito; consulta i vincoli.

Una richiesta a un endpoint al di fuori dell'ambito del token restituisce HTTP 403. Ambiti più granulari (per risorsa, o lettura rispetto a scrittura) non sono attualmente disponibili.

Limiti dei permessi

L'oauth_scope di una regola di federazione è un tetto massimo: il token emesso non può mai superarlo. L'organization_role dell'account di servizio di destinazione (developer o admin) determina quali ambiti sono concedibili, quindi una regola che concede org:admin deve avere come destinazione un account di servizio con organization_role=admin. I permessi effettivi sono l'intersezione tra l'ambito della regola e il ruolo dell'account di servizio.

oauth_scope della regolaorganization_role dell'account di servizioPermessi effettivi
workspace:developeradminAccesso alla Claude API solo nel workspace della regola. L'ambito limita il token al di sotto del ruolo.
org:adminadminAccesso completo all'Admin API (membri dell'organizzazione, inviti, workspace, chiavi API e il resto), escluse le eccezioni per i chiamanti OAuth; consulta i vincoli.

Regole di convalida

Anthropic applica questi vincoli quando crei o aggiorni issuer e regole, e quando verifica un JWT in ingresso al momento dello scambio.

Per i dettagli completi sui parametri e gli schemi di risposta, consulta il riferimento API degli account di servizio, il riferimento API degli issuer di federazione e il riferimento API delle regole di federazione.

Campi delle risorse

CampoVincolo
name di issuer, regola e account di servizioDeve corrispondere a ^[a-z0-9-]+$, lunghezza da 1 a 255 caratteri.
workspace_idObbligatorio alla creazione a meno che applies_to_all_workspaces sia true. Il workspace (wrkspc_...) la cui quota, fatturazione e limiti di velocità si applicano ai token emessi in base a questa regola. Deve essere un workspace della stessa organizzazione e l'account di servizio di destinazione deve essere membro di quel workspace.
applies_to_all_workspacesBooleano. Imposta true per abilitare la regola in ogni workspace dell'organizzazione anziché indicarne uno; alla creazione è obbligatorio questo campo oppure workspace_id.
token_lifetime_secondsIntero compreso tra 60 e 86400 (da 1 minuto a 24 ore). Valore predefinito 3600. I valori al di fuori di questo intervallo vengono rifiutati al momento della richiesta. Consulta Durata e aggiornamento del token.

Campi URL

I campi issuer_url, jwks.discovery_base e jwks.url vengono convalidati:

VincoloDettaglio
SchemaDeve essere https.
PortaDeve essere 443 (esplicita o predefinita).
HostDeve essere un nome host DNS pubblico per il tuo provider OIDC. Deve risolversi in indirizzi IP pubblici; gli indirizzi IP letterali non sono accettati.

Gli errori di convalida degli URL restituiscono 400 invalid_request_error con il nome del campo come prefisso nel messaggio di errore (ad esempio, issuer_url: url must use https scheme).

Verifica del JWT

VincoloDettaglio
Dimensione massimaIl JWT assertion deve essere al massimo di 16 KiB.
Algoritmo di firmaSono accettati solo algoritmi asimmetrici (famiglie RSA ed ECDSA: ES256, ES384, ES512, RS256, RS384, RS512, PS256, PS384, PS512). HMAC (HS256, HS384, HS512) e none vengono rifiutati.
ID della chiaveL'intestazione del JWT deve contenere un kid che corrisponda a una chiave nel JWKS dell'issuer. I token senza kid vengono rifiutati.
Claim obbligatorisub deve essere presente. iat deve essere presente e non nel futuro. exp deve essere presente e nel futuro.
Uso singoloUn'asserzione che contiene un claim jti può essere scambiata una sola volta per issuer: ripetere uno scambio con lo stesso jti viene rifiutato come replay. Il campo check_jti dell'issuer (abilitato per impostazione predefinita) controlla questa verifica; le asserzioni senza claim jti non vi sono soggette. Consulta il riferimento API degli issuer di federazione.
Durata massimaLa durata del token (exp meno iat) non deve superare il massimo configurato per l'issuer (1 ora per impostazione predefinita, configurabile per ciascun issuer nella Claude Console).
Sfasamento dell'orologioViene applicata una tolleranza di 30 secondi a exp, nbf e iat.

Semantica di corrispondenza delle regole

Il blocco match di una regola di federazione determina se un JWT in ingresso viene accettato. Tutti i campi compilati vengono valutati con semantica AND: il JWT deve soddisfare ogni matcher compilato. Deve essere impostato almeno uno tra subject_prefix, claims o condition; un blocco match che contiene solo audience (o nessun matcher) viene rifiutato. Questo protegge da regole che accetterebbero ogni token di un issuer.

MatcherTipoSemantica
subject_prefixstringCorrispondenza esatta con il claim sub del JWT. Un * finale lo rende una corrispondenza di prefisso (il valore di sub deve iniziare con i caratteri che precedono *). Distingue tra maiuscole e minuscole.
audiencestringIl claim aud del JWT deve contenere esattamente questa stringa. Quando aud è un array, qualsiasi elemento che corrisponda esattamente soddisfa la verifica.
claimsmap<string, string>Ogni chiave è il nome di un claim di primo livello e ogni valore è il valore stringa esatto richiesto. Per claim annidati, numerici, booleani o complessi come liste e mappe, usa invece condition con un'espressione CEL.
conditionstring (CEL)Un'espressione CEL che deve restituire true.

Ambiente di valutazione CEL

L'espressione condition ha accesso a una singola variabile:

VariabileTipoContenuto
claimsmapL'intero insieme di claim del JWT decodificato. Gli oggetti annidati sono accessibili come mappe annidate.

Esempio:

claims.sub.startsWith("repo:acme-corp/") && claims.ref in ["refs/heads/main", "refs/heads/release"]

Errori

Errori dello scambio del token

POST /v1/oauth/token restituisce gli errori nel formato di errore API standard. L'SDK segnala un errore di scambio come WorkloadIdentityError, che fornisce lo stato HTTP e i dettagli dell'errore dal corpo della risposta. L'ID della richiesta si trova sull'errore in Python, TypeScript e Ruby, e nelle intestazioni di risposta dell'eccezione in Java. In Go si trova solo nel messaggio dell'errore, perché il tipo dell'errore si trova in un pacchetto interno; gli errori C# e PHP non lo contengono.

StatoErroreCausaRisoluzione
400invalid_request_errorfederation_rule_id non è formattato correttamente oppure manca un campo obbligatorio della richiesta.Verifica l'ID fdrl_ e che il corpo della richiesta includa tutti i campi obbligatori.
400invalid_request_errorworkspace_id è presente ma non è un ID wrkspc_... ben formato né il valore letterale default.Correggi il valore di workspace_id; il messaggio di risposta indica il formato previsto.
401authentication_errorIl claim iss del JWT non è esattamente uguale all'issuer_url registrato.Confronta byte per byte, incluse barre finali e schema: jq -rR 'split(".")[1] | gsub("-";"+") | gsub("_";"/") | @base64d | fromjson | .iss' <<< "$JWT".
401authentication_errorIl recupero del JWKS non è riuscito, il JWKS non è aggiornato oppure il JWT è stato firmato con una chiave non presente nel JWKS.Per la modalità inline, aggiorna l'issuer con le chiavi ruotate. Per discovery ed explicit_url, verifica che l'endpoint JWKS sia raggiungibile sulla porta 443; se l'issuer ha ruotato di recente la propria chiave di firma, consulta Rotazione delle chiavi e caching.
401authentication_errorIl claim exp del JWT è nel passato (oltre la finestra di sfasamento di 30 secondi).Verifica che il tuo provider di identità stia proiettando un token nuovo e che l'SDK stia rileggendo il file del token.
401authentication_errorIl JWT è stato verificato ma i suoi claim non soddisfano il blocco match della regola.Decodifica il JWT e confronta ogni claim con la regola. subject_prefix distingue tra maiuscole e minuscole. audience richiede una corrispondenza esatta di un elemento.
401authentication_errorIl federation_rule_id non esiste, è archiviato oppure il JWT non è autorizzato per esso (consolidato per impedire l'enumerazione).Verifica l'ID della regola nella Claude Console e che la regola non sia stata archiviata.
401authentication_errorLa regola di federazione è abilitata per più di un workspace e la richiesta omette workspace_id. La voce della cronologia di autenticazione mostra il motivo workspace_id_required.Imposta ANTHROPIC_WORKSPACE_ID (o il campo del corpo workspace_id in una richiesta grezza) sull'ID wrkspc_... a cui vuoi limitare l'ambito del token. Consulta Richiesta di scambio del token.

Ogni rifiuto di un'asserzione restituisce lo stesso 401 authentication_error opaco con il messaggio fisso Authentication failed, indipendentemente da quale verifica non sia riuscita; un errore distinguibile consentirebbe a un chiamante di sondare la configurazione della regola. Il motivo del rifiuto viene registrato nella voce del tentativo nella cronologia di autenticazione nella Claude Console, ad esempio match_subject_prefix quando il claim sub non soddisfa il subject_prefix della regola, oppure workspace_id_required quando la regola si estende su più workspace e la richiesta non ne indica nessuno. Le richieste rifiutate prima che l'organizzazione della regola venga confermata (la famiglia 400 invalid_request_error sopra) non lasciano alcuna voce nella cronologia; i loro messaggi di risposta indicano direttamente il problema. Un 401 senza una voce corrispondente nella cronologia di solito significa che il federation_rule_id stesso non è stato riconosciuto.

Errori comuni lato SDK

SintomoCausaRisoluzione
L'SDK segnala "no credentials" invece di eseguire lo scambioUna tra ANTHROPIC_FEDERATION_RULE_ID, ANTHROPIC_ORGANIZATION_ID, ANTHROPIC_SERVICE_ACCOUNT_ID o ANTHROPIC_IDENTITY_TOKEN[_FILE] non è impostata e nessun profilo è attivo.Imposta tutte e quattro le variabili oppure configura un profilo.
L'SDK si autentica con una chiave API invece di usare la federazioneANTHROPIC_API_KEY o ANTHROPIC_AUTH_TOKEN è impostata e ha la precedenza.Rimuovi la variabile della chiave o del token.
FileNotFoundError alla prima richiestaIl percorso in ANTHROPIC_IDENTITY_TOKEN_FILE non esiste. L'SDK apre il file in modo differito al momento dello scambio.Verifica che il volume del token proiettato sia montato e che il percorso corrisponda.
Lo scambio del token riesce ma una richiesta alla Claude API restituisce 403L'ambito del token emesso non concede l'accesso a quell'endpoint.Confronta l'oauth_scope della regola con gli ambiti OAuth.
L'autenticazione non riesce con una credenziale vuotaUna variabile d'ambiente di credenziali è esportata ma impostata su una stringa vuota. I valori vuoti possono comunque vincere la propria posizione di precedenza.Rimuovi la variabile con unset VAR anziché VAR="".

Risolvere i problemi di uno scambio non riuscito

Una risposta 401 authentication_error è intenzionalmente opaca e il suo messaggio è sempre Authentication failed; il motivo del rifiuto viene registrato nella cronologia di autenticazione, non nella risposta.

Un errore opaco comune è un'asserzione riutilizzata: un'asserzione che contiene un claim jti può essere scambiata una sola volta, quindi un carico di lavoro che invia di nuovo lo stesso JWT (un ciclo di tentativi, o un aggiornamento che rilegge un token non ruotato) viene rifiutato al secondo scambio. La pagina della cronologia di autenticazione mostra questi tentativi con il motivo jti_reused; la soluzione è emettere una nuova asserzione per ogni scambio.

Se devi comunque eseguire il debug a partire dal JWT stesso, esegui queste verifiche nell'ordine:

  1. Decodifica il JWT

    Decodifica l'asserzione che hai inviato in modo da poter confrontare ogni claim con la configurazione dell'issuer e della regola:

    cURL
    jq -rR 'split(".")[1] | gsub("-";"+") | gsub("_";"/") | @base64d | fromjson' <<< "$JWT"
  2. Verifica che iss corrisponda all'issuer

    Il claim iss decodificato deve essere uguale byte per byte all'issuer_url registrato, inclusi schema, porta ed eventuale barra finale. Una differenza anche di un solo carattere fa fallire la verifica.

  3. Verifica che aud corrisponda alla regola

    Il claim aud decodificato deve contenere il valore audience della regola come corrispondenza esatta. Quando aud è un array, un elemento deve corrispondere esattamente.

  4. Verifica sub e ogni voce di claims

    Confronta sub con il subject_prefix della regola (distingue tra maiuscole e minuscole; un * finale indica una corrispondenza di prefisso, qualsiasi altro valore è esatto). Confronta ogni chiave della mappa claims della regola con il claim di primo livello con lo stesso nome.

  5. Verifica exp, nbf e iat

    exp deve essere nel futuro e nbf/iat devono essere nel passato, entro la finestra di sfasamento di 30 secondi. Se l'orologio dell'host del carico di lavoro ha subito una deriva, un token altrimenti valido viene rifiutato.

  6. Verifica la raggiungibilità del JWKS

    Per la modalità discovery, recupera <jwks.discovery_base or issuer_url>/.well-known/openid-configuration tramite HTTPS pubblico sulla porta 443 e verifica che jwks_uri venga risolto. Per explicit_url, recupera direttamente l'URL del JWKS. Per inline, verifica che la chiave di firma dell'issuer non sia stata ruotata da quando hai registrato le chiavi.

    Se l'issuer ha ruotato la propria chiave di firma e ha iniziato immediatamente a firmare con essa, gli scambi possono non riuscire per un massimo di un minuto mentre la cache JWKS di Anthropic si aggiorna. Consulta Rotazione delle chiavi e caching.

Modalità di origine del JWKS

Quando registri un issuer di federazione, il campo jwks controlla il modo in cui Anthropic ottiene le chiavi pubbliche utilizzate per verificare le firme dei JWT di quell'issuer. Si tratta di un'unione discriminata con chiave type:

jwks.typeForma di jwksComportamentoQuando usarla
discovery (predefinita){ "type": "discovery", "discovery_base": "https://..." } (discovery_base è facoltativo; impostalo quando l'URL di discovery è diverso da issuer_url)Anthropic recupera <discovery_base or issuer_url>/.well-known/openid-configuration, legge jwks_uri dal documento di discovery e recupera il JWKS da lì.Il tuo IdP fornisce un documento di discovery OIDC standard su Internet pubblico. La maggior parte dei provider gestiti (EKS, GKE, Cloud Run, GitHub Actions, Entra ID) lo supporta.
explicit_url{ "type": "explicit_url", "url": "https://..." }Anthropic recupera il JWKS direttamente da url. L'issuer_url viene usato solo per il confronto di stringhe con il claim iss del JWT e non viene mai contattato.Il tuo IdP non fornisce un documento di discovery, oppure la discovery è solo interna ma il JWKS è raggiungibile pubblicamente.
inline{ "type": "inline", "keys": [...] }Fornisci l'array di oggetti JWK inline (l'array keys del documento JWKS, non l'oggetto contenitore). Anthropic non effettua alcuna richiesta in uscita. L'issuer_url viene usato solo per il confronto con iss.Ambienti air-gapped, cluster Kubernetes autogestiti con URL dell'issuer interni al cluster, oppure quando vuoi un controllo esplicito sulla rotazione delle chiavi.

L'unione discriminata rende i campi associati mutuamente esclusivi per costruzione. Sia discovery sia explicit_url accettano anche una stringa facoltativa ca_cert_pem per gli issuer che servono TLS da una CA privata.

Rotazione delle chiavi e caching

Nelle modalità discovery ed explicit_url, Anthropic memorizza nella cache il JWKS recuperato. Se il tuo provider di identità pubblica una nuova chiave di firma e inizia immediatamente a firmare token con essa, gli scambi che presentano tali token possono non riuscire con un errore di firma per un massimo di 1 minuto mentre la cache si aggiorna.

Per evitare questa finestra, pubblica una nuova chiave di firma nel JWKS almeno 15 minuti prima che il tuo provider di identità inizi a firmare token con essa, e mantieni la chiave sostituita nel JWKS finché i token da essa firmati non sono scaduti. I provider di identità gestiti in genere seguono autonomamente questa disciplina. Se gestisci un tuo issuer (un cluster Kubernetes autogestito, un provider di discovery OIDC SPIRE o un server di autorizzazione personalizzato Okta con una cadenza di rotazione configurata), verifica che la tua politica di rotazione pubblichi le nuove chiavi prima del primo utilizzo.

Was this page helpful?