• Nachrichten
  • Managed Agents
  • Admin
Search...
⌘K
Organisation
Admin APIWorkspaces
Authentifizierung
ÜbersichtWorkload Identity FederationWIF-Referenz
Monitoring
Usage and Cost APIRate Limits APIClaude Code Analytics API
Daten & Compliance
DatenresidenzAPI und Datenaufbewahrung
Compliance API
ÜbersichtZugriff erhaltenAktivitäts-FeedChats, Dateien und ProjekteOrganisationen, Benutzer, Rollen und GruppenIntegration entwerfenFehlerFAQ
Log in
WIF-Referenz
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/Authentifizierung

WIF-Referenz

Umgebungsvariablen, Validierungsregeln, Profilkonfiguration und Fehlerreferenz für Workload Identity Federation.

Diese Seite fasst die Konfigurationsoberflächen, Validierungseinschränkungen und Fehlerzuordnungen für Workload Identity Federation zusammen. Für Einrichtungsanleitungen siehe die Provider-Leitfäden.

Token-Exchange-Anfrage

POST /v1/oauth/token akzeptiert einen JSON-Body mit dem jwt-bearer-Grant gemäß RFC 7523. Die SDKs erstellen diese Anfrage für dich aus den Umgebungsvariablen; die cURL-Beispiele in den einzelnen Provider-Leitfäden zeigen den rohen Body.

FeldErforderlichBeschreibung
grant_typeJaImmer urn:ietf:params:oauth:grant-type:jwt-bearer.
assertionJaDas OIDC-JWT, das von deinem Identity Provider ausgestellt wurde.
federation_rule_idJaGetaggte ID (fdrl_...) der auszuwertenden Federation-Regel.
organization_idJaUUID deiner Anthropic-Organisation.
service_account_idJaGetaggte ID (svac_...) des Ziel-Service-Accounts.
workspace_idBedingtGetaggte ID (wrkspc_...) des Workspaces, auf den das ausgestellte Token beschränkt werden soll, oder das Literal default für den Standard-Workspace der Organisation. Erforderlich, wenn die Regel für mehr als einen Workspace aktiviert ist. Wenn weggelassen, wählt der Server den einzigen aktivierten Workspace der Regel aus.

Token-Exchange-Antwort

POST /v1/oauth/token gibt eine standardmäßige OAuth-2.0-Token-Antwort zurück (RFC 6749 §5.1):

FeldTypBeschreibung
access_tokenstringDas kurzlebige Anthropic-Token mit dem Präfix sk-ant-oat01-.... Übergib es als Authorization: Bearer <token>.
token_typestringImmer Bearer.
expires_inintegerSekunden bis zum Ablauf des Tokens.
scopestringDer OAuth-Scope, der durch die passende Regel gewährt wurde.

Umgebungsvariablen

Das SDK liest diese Variablen, um einen föderierten Token-Exchange ohne Konstruktorargumente durchzuführen.

VariableErforderlichBeschreibungBeispiel
ANTHROPIC_FEDERATION_RULE_IDJaGetaggte ID der auszuwertenden Federation-Regel.fdrl_...
ANTHROPIC_ORGANIZATION_IDJaUUID deiner Anthropic-Organisation. Du findest sie in der Claude Console unter Settings > Organization.00000000-0000-0000-0000-000000000000
ANTHROPIC_IDENTITY_TOKEN_FILEEine von _TOKEN_FILE oder _TOKENDateisystempfad zum JWT, das von deinem Identity Provider (IdP) ausgestellt wurde. Das SDK liest diese Datei bei jedem Exchange neu ein, sodass projizierte Tokens, die auf der Festplatte rotieren, immer aktuell sind./var/run/secrets/anthropic.com/token
ANTHROPIC_IDENTITY_TOKENEine von _TOKEN_FILE oder _TOKENDas JWT als literaler String. Verwende dies, wenn deine Plattform das Token als Umgebungsvariable statt als Datei injiziert.eyJhbGciOiJSUzI1NiIs...
ANTHROPIC_SERVICE_ACCOUNT_IDJaGetaggte ID des Ziel-Service-Accounts bei Anthropic, als der das ausgestellte Access-Token agiert.svac_...
ANTHROPIC_WORKSPACE_IDBedingtGetaggte ID des Workspaces, auf den das ausgestellte Token beschränkt werden soll, oder das Literal default. Erforderlich, wenn die Federation-Regel für mehr als einen Workspace aktiviert ist; optional, wenn die Regel an einen einzelnen Workspace gebunden ist. Das ausgestellte Token wird zum Zeitpunkt des Exchange auf diesen Workspace beschränkt, sodass ein Wechsel des Workspaces einen neuen Exchange erfordert.wrkspc_...
ANTHROPIC_PROFILENeinName eines Konfigurationsprofils, das geladen werden soll. Hat Vorrang vor den Federation-Umgebungsvariablen in dieser Tabelle.staging-profile

Der direkte Federation-Pfad über Umgebungsvariablen wird nur aktiviert, wenn ANTHROPIC_FEDERATION_RULE_ID, ANTHROPIC_ORGANIZATION_ID, ANTHROPIC_SERVICE_ACCOUNT_ID und eine von ANTHROPIC_IDENTITY_TOKEN_FILE oder ANTHROPIC_IDENTITY_TOKEN alle gesetzt sind. ANTHROPIC_WORKSPACE_ID wird zusammen mit diesen gelesen, steuert aber nicht die Aktivierung.

Eine Variable, die auf einen leeren String gesetzt ist, belegt trotzdem ihren Platz in der Credential-Prioritätskette. Wenn ANTHROPIC_API_KEY="" exportiert ist, wählt das SDK den API-Key-Pfad mit einem leeren Key, anstatt zur Federation durchzufallen. Lösche ungenutzte Credential-Variablen, anstatt sie zu leeren.

Credential-Priorität

Das SDK löst Credentials in dieser Reihenfolge auf. Die erste Quelle, die ein Credential liefert, gewinnt.

ReihenfolgeQuelleHinweise
1Konstruktorargument (api_key=, auth_token=, credentials=)Überschreibt immer alles andere.
2ANTHROPIC_API_KEY oder ANTHROPIC_AUTH_TOKENÜberschattet Federation vollständig. Lösche diese, wenn du von API-Keys migrierst.
3ANTHROPIC_PROFILELädt <config_dir>/configs/<name>.json. Ein fehlendes benanntes Profil ist ein Fehler, kein Fall-Through.
4Federation-UmgebungsvariablenANTHROPIC_FEDERATION_RULE_ID + ANTHROPIC_ORGANIZATION_ID + ANTHROPIC_SERVICE_ACCOUNT_ID + ANTHROPIC_IDENTITY_TOKEN[_FILE].
5Aktives ProfilAufgelöst aus <config_dir>/active_config, mit Fallback auf ein Profil namens default.

Wenn ein Profil geladen wird, füllen Umgebungsvariablen alle Felder aus, die das Profil auslässt, überschreiben aber niemals Felder, die das Profil explizit setzt. Zum Beispiel füllt ANTHROPIC_WORKSPACE_ID nur dann workspace_id aus, wenn das aktive Profil es nicht setzt.

Profil-Konfigurationsdatei

Ein Profil ist eine benannte Konfigurationsdatei, die sowohl das SDK als auch die ant-CLI lesen. Profile ermöglichen es dir, Federation-Parameter mit deinem Container-Image auszuliefern oder zwischen Umgebungen zu wechseln, ohne Code zu ändern.

Konfigurationsverzeichnis

Das SDK ermittelt das Konfigurationsverzeichnis in dieser Reihenfolge:

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

Aktives Profil

Der Name des aktiven Profils wird in dieser Reihenfolge aufgelöst:

  1. $ANTHROPIC_PROFILE
  2. Der Inhalt von <config_dir>/active_config (eine einzeilige Datei, die von ant profile activate <name> geschrieben wird)
  3. Der literale Name default

Claude Code und das Claude Agent SDK folgen derselben Auflösungsreihenfolge, sodass ein hier konfiguriertes Federation-Profil auch diese Tools ohne zusätzliche Einrichtung authentifiziert.

Dateistruktur

PfadInhaltSensibilität
<config_dir>/configs/<profile>.jsonversion, der authentication-Block, organization_id, workspace_id und base_url.Nicht geheim. Kann sicher committet oder in ein Image eingebettet werden.
<config_dir>/credentials/<profile>.jsonversion, das gecachte access_token, expires_at und (für interaktives Login) refresh_token.Geheim. Vom SDK mit Modus 0600 geschrieben.

Sowohl die Config-Datei als auch die Credentials-Datei enthalten ein String-Feld version auf oberster Ebene im Format major.minor (derzeit "1.0"). Das SDK schreibt dieses Feld automatisch, damit zukünftige Releases ältere Formate erkennen und migrieren können; lässt du es beim manuellen Erstellen einer Config weg, behandelt das SDK die Datei als aktuelle Version.

Beispiel für ein Federation-Profil

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"
}

Wenn authentication.identity_token weggelassen wird, greift das SDK auf ANTHROPIC_IDENTITY_TOKEN_FILE oder ANTHROPIC_IDENTITY_TOKEN aus der Umgebung zurück.

OAuth-Scopes

Der oauth_scope, den du für eine Federation-Regel festlegst, bestimmt, welche Claude-API-Endpunkte das ausgestellte Access-Token aufrufen kann.

ScopeGewährt Zugriff auf
workspace:developerAlle nicht-administrativen Claude-API-Endpunkte im Workspace der Regel: Messages (einschließlich Streaming und Token-Zählung), Models, Managed Agents und deren Sessions, Files und Skills. Dies entspricht dem Zugriff, den ein für denselben Workspace ausgestellter API-Key hat.
org:manage_tunnelsDie MCP-Tunnels-API: Tunnel auflisten und abrufen, CA-Zertifikate registrieren und archivieren, das Tunnel-Token anzeigen und rotieren sowie Tunnel archivieren. Das Create-Tunnel-Modal der Console sperrt diesen Scope, wenn du von dort aus eine Regel erstellst.

Eine Anfrage an einen Endpunkt außerhalb des Token-Scopes gibt HTTP 403 zurück. Feingranularere Scopes (pro Ressource oder Lesen versus Schreiben) sind derzeit nicht verfügbar.

Validierungsregeln

Anthropic erzwingt diese Einschränkungen, wenn du Issuer und Regeln erstellst oder aktualisierst, sowie bei der Verifizierung eines eingehenden JWT zum Zeitpunkt des Exchange.

Ressourcenfelder

FeldEinschränkung
name von Issuer, Regel und Service-AccountMuss ^[a-z0-9-]+$ entsprechen, Länge 1 bis 255 Zeichen.
workspace_idOptional. Der Workspace (wrkspc_...), dessen Kontingent, Abrechnung und Ratenlimits für Tokens gelten, die unter dieser Regel ausgestellt werden. Muss ein Workspace in derselben Organisation sein, und der Ziel-Service-Account muss Mitglied dieses Workspaces sein. Kann für Regeln weggelassen werden, die nur für einen Workspace konfiguriert sind.
token_lifetime_secondsInteger zwischen 60 und 86400 (1 Minute bis 24 Stunden). Standard 3600. Werte außerhalb dieses Bereichs werden zum Zeitpunkt der Anfrage abgelehnt. Siehe Token-Lebensdauer und Refresh.

URL-Felder

Die Felder issuer_url, jwks.discovery_base und jwks.url werden validiert:

EinschränkungDetail
SchemaMuss https sein.
PortMuss 443 sein (explizit oder Standard).
HostMuss ein öffentlicher DNS-Hostname für deinen OIDC-Provider sein. Muss zu öffentlichen IP-Adressen auflösen; IP-Literale werden nicht akzeptiert.

Fehler bei der URL-Validierung geben 400 invalid_request_error mit dem Feldnamen als Präfix in der Fehlermeldung zurück (zum Beispiel issuer_url: url must use https scheme).

URL-Einschränkungen gelten nur für URLs, die Anthropic aufruft. In den JWKS-Modi explicit_url und inline sowie im discovery-Modus, wenn jwks.discovery_base gesetzt ist, wird die issuer_url als String mit dem JWT-iss-Claim verglichen und niemals abgerufen, sodass sie auf einen internen Hostnamen oder einen nicht standardmäßigen Port verweisen darf.

JWT-Verifizierung

EinschränkungDetail
Maximale GrößeDas assertion-JWT darf höchstens 16 KiB groß sein.
SignaturalgorithmusNur asymmetrische Algorithmen (RSA- und ECDSA-Familien: ES256, ES384, ES512, RS256, RS384, RS512, PS256, PS384, PS512) werden akzeptiert. HMAC (HS256, HS384, HS512) und none werden abgelehnt.
Key-IDDer JWT-Header muss eine kid enthalten, die mit einem Key im JWKS des Issuers übereinstimmt. Tokens ohne kid werden abgelehnt.
Erforderliche Claimssub muss vorhanden sein. iat muss vorhanden sein und darf nicht in der Zukunft liegen. exp muss vorhanden sein und in der Zukunft liegen.
Maximale LebensdauerDie Lebensdauer des Tokens (exp minus iat) darf das konfigurierte Maximum des Issuers nicht überschreiten (standardmäßig 1 Stunde, für jeden Issuer in der Claude Console konfigurierbar).
Clock-SkewEine Toleranz von 30 Sekunden wird auf exp, nbf und iat angewendet.

Regel-Matching-Semantik

Der match-Block einer Federation-Regel bestimmt, ob ein eingehendes JWT akzeptiert wird. Alle ausgefüllten Felder werden mit AND-Semantik ausgewertet: Das JWT muss jeden ausgefüllten Matcher erfüllen. Mindestens eines von subject_prefix, claims oder condition muss gesetzt sein; ein match-Block, der nur audience (oder gar keine Matcher) enthält, wird abgelehnt. Dies schützt vor Regeln, die jedes Token von einem Issuer akzeptieren würden.

MatcherTypSemantik
subject_prefixstringExakter Abgleich mit dem JWT-sub-Claim. Ein abschließendes * macht daraus einen Präfix-Abgleich (der sub-Wert muss mit den Zeichen vor dem * beginnen). Case-sensitive.
audiencestringDer JWT-aud-Claim muss genau diesen String enthalten. Wenn aud ein Array ist, erfüllt jedes exakt übereinstimmende Element die Prüfung.
claimsmap<string, string>Jeder Key ist ein Claim-Name auf oberster Ebene und jeder Wert ist der erforderliche exakte String-Wert. Für verschachtelte, numerische, boolesche oder komplexe Claims wie Listen und Maps verwende stattdessen condition mit einem CEL-Ausdruck.
conditionstring (CEL)Ein CEL-Ausdruck, der zu true auswerten muss.

CEL-Auswertungsumgebung

Der condition-Ausdruck hat Zugriff auf eine einzige Variable:

VariableTypInhalt
claimsmapDer vollständige dekodierte JWT-Claim-Satz. Verschachtelte Objekte sind als verschachtelte Maps zugänglich.

Beispiel:

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

CEL-Bedingungen sind Sicherheitsgrenzen. Ein Ausdruck, der für mehr Eingaben als beabsichtigt zu true auswertet, gewährt breiteren Zugriff als beabsichtigt. Bevorzuge die statischen Matcher, wenn sie deine Einschränkung ausdrücken können.

Fehler

Token-Exchange-Fehler

POST /v1/oauth/token gibt Fehler im standardmäßigen API-Fehlerformat zurück. Das SDK verpackt Exchange-Fehler in einen typisierten FederationExchangeError (oder das sprachspezifische Äquivalent), der den HTTP-Status, den Response-Body und die request_id verfügbar macht.

StatusFehlerUrsacheLösung
400invalid_requestfederation_rule_id ist fehlerhaft oder ein erforderliches Anfragefeld fehlt.Überprüfe die fdrl_-ID und dass der Request-Body alle erforderlichen Felder enthält.
400invalid_requestworkspace_id_required: Die Federation-Regel ist für mehr als einen Workspace aktiviert und die Anfrage lässt workspace_id weg.Setze ANTHROPIC_WORKSPACE_ID (oder das workspace_id-Body-Feld bei einer rohen Anfrage) auf die wrkspc_...-ID, auf die das Token beschränkt werden soll. Siehe Token-Exchange-Anfrage.
400invalid_grantDer JWT-iss-Claim entspricht nicht exakt der registrierten issuer_url.Vergleiche Byte für Byte, einschließlich abschließender Schrägstriche und Schema: jq -rR 'split(".")[1] | gsub("-";"+") | gsub("_";"/") | @base64d | fromjson | .iss' <<< "$JWT".
400invalid_grantJWKS-Abruf fehlgeschlagen, JWKS ist veraltet, oder das JWT wurde mit einem Key signiert, der nicht im JWKS enthalten ist.Für den inline-Modus aktualisiere den Issuer mit den rotierten Keys. Für discovery und explicit_url bestätige, dass der JWKS-Endpunkt auf Port 443 erreichbar ist; wenn der Issuer kürzlich seinen Signatur-Key rotiert hat, siehe Key-Rotation und Caching.
400invalid_grantDer JWT-exp-Claim liegt in der Vergangenheit (außerhalb des 30-Sekunden-Skew-Fensters).Bestätige, dass dein Identity Provider ein frisches Token projiziert und das SDK die Token-Datei neu einliest.
400invalid_grantDas JWT wurde verifiziert, aber seine Claims erfüllen den match-Block der Regel nicht.Dekodiere das JWT und vergleiche jeden Claim mit der Regel. subject_prefix ist case-sensitive. audience erfordert einen exakten Element-Abgleich.
400invalid_grantDie federation_rule_id existiert nicht, ist archiviert, oder das JWT ist nicht dafür autorisiert (konsolidiert, um Enumeration zu verhindern).Bestätige die Regel-ID in der Claude Console und dass die Regel nicht archiviert wurde.

Alle invalid_grant-Fehler geben HTTP 400 zurück; die spezifische Ursache wird nur serverseitig protokolliert und nicht in der Antwort offengelegt.

Häufige SDK-seitige Fehler

SymptomUrsacheLösung
SDK meldet „no credentials" statt einen Exchange durchzuführenEine von ANTHROPIC_FEDERATION_RULE_ID, ANTHROPIC_ORGANIZATION_ID, ANTHROPIC_SERVICE_ACCOUNT_ID oder ANTHROPIC_IDENTITY_TOKEN[_FILE] ist nicht gesetzt und kein Profil ist aktiv.Setze alle vier Variablen oder konfiguriere ein Profil.
SDK authentifiziert mit einem API-Key statt zu föderierenANTHROPIC_API_KEY oder ANTHROPIC_AUTH_TOKEN ist gesetzt und gewinnt die Priorität.Lösche die Key- oder Token-Variable.
FileNotFoundError bei der ersten AnfrageDer Pfad in ANTHROPIC_IDENTITY_TOKEN_FILE existiert nicht. Das SDK öffnet die Datei lazy zum Zeitpunkt des Exchange.Bestätige, dass das Projected-Token-Volume gemountet ist und der Pfad übereinstimmt.
Token-Exchange erfolgreich, aber eine Claude-API-Anfrage gibt 403 zurückDer Scope des ausgestellten Tokens gewährt keinen Zugriff auf diesen Endpunkt.Überprüfe den oauth_scope der Regel anhand von OAuth-Scopes.
Authentifizierung schlägt mit leerem Credential fehlEine Credential-Umgebungsvariable ist exportiert, aber auf einen leeren String gesetzt. Leere Werte gewinnen trotzdem ihren Prioritätsplatz.Lösche die Variable mit unset VAR statt VAR="".

Fehlerbehebung bei einem fehlgeschlagenen Exchange

Eine 400 invalid_grant-Antwort ist absichtlich undurchsichtig; die spezifische Ursache wird nur serverseitig protokolliert.

Beginne mit der Authentifizierungsverlaufsseite in der Claude Console. Kürzliche Exchange-Versuche zeigen den Issuer und die Regel, die ausgewertet wurden, die JWT-Claims, die geprüft wurden, und welcher Validierungsschritt fehlgeschlagen ist – das erspart dir in der Regel die folgenden Prüfungen.

Wenn du dennoch anhand des JWT selbst debuggen musst, arbeite diese Prüfungen der Reihe nach durch:

  1. 1

    Dekodiere das JWT

    Dekodiere die gesendete Assertion, damit du jeden Claim mit deiner Issuer- und Regelkonfiguration vergleichen kannst:

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

    Prüfe, ob iss mit dem Issuer übereinstimmt

    Der dekodierte iss-Claim muss Byte für Byte mit der registrierten issuer_url übereinstimmen, einschließlich Schema, Port und eventuellem abschließenden Schrägstrich. Eine Abweichung bei einem einzigen Zeichen lässt die Verifizierung fehlschlagen.

  3. 3

    Prüfe, ob aud mit der Regel übereinstimmt

    Der dekodierte aud-Claim muss den audience-Wert der Regel als exakte Übereinstimmung enthalten. Wenn aud ein Array ist, muss ein Element exakt übereinstimmen.

  4. 4

    Prüfe sub und jeden claims-Eintrag

    Vergleiche sub mit dem subject_prefix der Regel (case-sensitive; ein abschließendes * ist ein Präfix-Abgleich, alles andere ist exakt). Vergleiche jeden Key in der claims-Map der Regel mit dem gleichnamigen Claim auf oberster Ebene.

  5. 5

    Prüfe exp, nbf und iat

    exp muss in der Zukunft liegen und nbf/iat müssen in der Vergangenheit liegen, innerhalb des 30-Sekunden-Skew-Fensters. Wenn die Uhr des Workload-Hosts abgedriftet ist, wird ein ansonsten gültiges Token abgelehnt.

  6. 6

    Prüfe die JWKS-Erreichbarkeit

    Für den discovery-Modus rufe <jwks.discovery_base oder issuer_url>/.well-known/openid-configuration über öffentliches HTTPS auf Port 443 ab und bestätige, dass jwks_uri auflöst. Für explicit_url rufe die JWKS-URL direkt ab. Für inline bestätige, dass der Signatur-Key des Issuers seit der Registrierung der Keys nicht rotiert wurde.

    Wenn der Issuer seinen Signatur-Key rotiert hat und sofort damit zu signieren begonnen hat, können Exchanges bis zu einer Minute lang fehlschlagen, während der JWKS-Cache von Anthropic aktualisiert wird. Siehe Key-Rotation und Caching.

JWKS-Quellmodi

Wenn du einen Federation-Issuer registrierst, steuert das jwks-Feld, wie Anthropic die öffentlichen Keys erhält, die zur Verifizierung von JWT-Signaturen dieses Issuers verwendet werden. Es ist eine Discriminated Union mit type als Schlüssel:

jwks.typejwks-StrukturVerhaltenVerwende, wenn
discovery (Standard){ "type": "discovery", "discovery_base": "https://..." } (discovery_base ist optional; setze es, wenn die Discovery-URL von issuer_url abweicht)Anthropic ruft <discovery_base oder issuer_url>/.well-known/openid-configuration ab, liest jwks_uri aus dem Discovery-Dokument und ruft das JWKS von dort ab.Dein IdP stellt ein standardmäßiges OIDC-Discovery-Dokument im öffentlichen Internet bereit. Die meisten verwalteten Provider (EKS, GKE, Cloud Run, GitHub Actions, Entra ID) unterstützen dies.
explicit_url{ "type": "explicit_url", "url": "https://..." }Anthropic ruft das JWKS direkt von url ab. Die issuer_url wird nur für den String-Vergleich mit dem JWT-iss-Claim verwendet und niemals aufgerufen.Dein IdP stellt kein Discovery-Dokument bereit, oder Discovery ist nur intern verfügbar, aber das JWKS ist öffentlich erreichbar.
inline{ "type": "inline", "keys": [...] }Du lieferst das Array von JWK-Objekten inline (das keys-Array aus dem JWKS-Dokument, nicht das Wrapper-Objekt). Anthropic stellt keine ausgehende Anfrage. Die issuer_url wird nur für den iss-Vergleich verwendet.Air-Gapped-Umgebungen, selbstverwaltete Kubernetes-Cluster mit cluster-internen Issuer-URLs, oder wenn du explizite Kontrolle über die Key-Rotation haben möchtest.

Die Discriminated Union macht die Begleitfelder per Konstruktion gegenseitig ausschließend. Sowohl discovery als auch explicit_url akzeptieren zusätzlich einen optionalen ca_cert_pem-String für Issuer, die TLS von einer privaten CA bereitstellen.

Key-Rotation und Caching

In den Modi discovery und explicit_url cacht Anthropic das abgerufene JWKS. Wenn dein Identity Provider einen neuen Signatur-Key veröffentlicht und sofort beginnt, Tokens damit zu signieren, können Exchanges, die diese Tokens präsentieren, bis zu einer Minute lang mit einem Signaturfehler fehlschlagen, während der Cache aktualisiert wird.

Um dieses Zeitfenster zu vermeiden, veröffentliche einen neuen Signatur-Key mindestens 15 Minuten im JWKS, bevor dein Identity Provider beginnt, Tokens damit zu signieren, und behalte den abgelösten Key im JWKS, bis die damit signierten Tokens abgelaufen sind. Verwaltete Identity Provider folgen dieser Disziplin in der Regel von selbst. Wenn du deinen eigenen Issuer betreibst (einen selbstverwalteten Kubernetes-Cluster, einen SPIRE-OIDC-Discovery-Provider oder einen Okta-Custom-Authorization-Server mit konfigurierter Rotationskadenz), bestätige, dass deine Rotationsrichtlinie neue Keys vor der ersten Verwendung veröffentlicht.

Im inline-Modus gibt es keine automatische Key-Aktualisierung. Wenn dein Identity Provider seine Signatur-Keys rotiert, musst du die Issuer-Konfiguration mit dem neuen JWKS aktualisieren, sonst schlagen alle Token-Exchanges bei der Signaturverifizierung fehl.

Was this page helpful?

  • Token-Exchange-Anfrage
  • Token-Exchange-Antwort
  • Umgebungsvariablen
  • Credential-Priorität
  • Profil-Konfigurationsdatei
  • Konfigurationsverzeichnis
  • Aktives Profil
  • Dateistruktur
  • Beispiel für ein Federation-Profil
  • OAuth-Scopes
  • Validierungsregeln
  • Ressourcenfelder
  • URL-Felder
  • JWT-Verifizierung
  • Regel-Matching-Semantik
  • CEL-Auswertungsumgebung
  • Fehler
  • Token-Exchange-Fehler
  • Häufige SDK-seitige Fehler
  • Fehlerbehebung bei einem fehlgeschlagenen Exchange
  • JWKS-Quellmodi
  • Key-Rotation und Caching