Claude Platform Docs

建立聯合簽發者

$client->beta->organization->federation->issuers->create(string issuerURL, string name, ?bool checkJTI, ?JWKS jwks, ?int maxJWTLifetimeSeconds, ?list<AnthropicBeta> betas): BetaFederationIssuer
POST/v1/organizations/federation_issuers

需要具有 org:admin 範圍的 OAuth 存取權杖,可透過 ant auth login --scope org:admin 或工作負載身分聯合規則取得;不接受 Admin API 金鑰。請參閱使用 Admin API 管理 WIF

註冊一個 OIDC 簽發者,Anthropic 將信任該簽發者以在您的組織中進行 工作負載身分聯合。

jwks 欄位控制如何取得簽發者的簽署金鑰,並採用由 type 選取的 三種形式之一:discovery(透過 OIDC 探索解析金鑰)、explicit_url (從固定的 JWKS URL 擷取金鑰)或 inline(提供靜態金鑰集)。 當 jwks.typediscovery 且未設定 discovery_base 時,簽發者 URL 必須可透過 HTTPS 公開存取,以便 Anthropic 擷取探索文件;對於 explicit_urlinline 模式,簽發者 URL 僅用於比對 JWT 的 iss 宣告, 不會被擷取。

Parameters
issuerURL: string

The iss claim value to match against.

name: string

Slug identifier (lowercase, digits, hyphens). Unique within the organization; a duplicate name returns 409.

checkJTI?:optional bool

Whether the jwt-bearer exchange enforces JTI single-use (replay protection) for tokens from this issuer. Defaults to true. Applies only to assertions carrying a jti claim; tokens without one are accepted without single-use enforcement.

jwks?:optional JWKS

How signing keys are obtained. Defaults to OIDC discovery.

maxJWTLifetimeSeconds?:optional int

Maximum allowed iat→exp spread for assertions from this issuer (1-176400 seconds, i.e. up to 49h). Defaults to 3600 (1h). Assertions must carry both iat and exp; a missing iat is rejected.

betas?:optional list<AnthropicBeta>

Optional header to specify the beta version(s) you want to use.

Returns
class BetaFederationIssuer { $type = 'federation_issuer'; $id; $archivedAt; /* 12 more */ }
建立聯合簽發者
<?php

require_once dirname(__DIR__) . '/vendor/autoload.php';

$client = new Client(apiKey: 'my-anthropic-api-key');

$betaFederationIssuer = $client
  ->beta
  ->organization
  ->federation
  ->issuers
  ->create(
  issuerURL: 'x',
  name: 'x',
  checkJTI: true,
  jwks: [
    'type' => 'discovery',
    'caCertPEM' => 'ca_cert_pem',
    'discoveryBase' => 'discovery_base',
  ],
  maxJWTLifetimeSeconds: 1,
  betas: [AnthropicBeta::MESSAGE_BATCHES_2024_09_24],
);

var_dump($betaFederationIssuer);
Returns Examples
Response 200
{
  "id": "fdis_01SDCCSbTxrXDpWc1phhtcfK",
  "archived_at": "2019-12-27T18:11:19.117Z",
  "archived_by_actor_id": "archived_by_actor_id",
  "check_jti": true,
  "created_at": "2024-10-30T23:58:27.427722Z",
  "created_by_actor_id": "created_by_actor_id",
  "issuer_url": "https://token.actions.githubusercontent.com",
  "jwks": {
    "type": "discovery",
    "ca_cert_pem": "ca_cert_pem",
    "discovery_base": "discovery_base"
  },
  "jwks_polling_disabled_at": "2019-12-27T18:11:19.117Z",
  "max_jwt_lifetime_seconds": 0,
  "name": "github-actions",
  "poll_status": {
    "consecutive_failures": 0,
    "last_fetched_at": "2019-12-27T18:11:19.117Z",
    "next_poll_at": "2019-12-27T18:11:19.117Z"
  },
  "type": "federation_issuer",
  "updated_at": "2024-10-30T23:58:27.427722Z",
  "updated_by_actor_id": "updated_by_actor_id"
}