Справочник WIF
Переменные окружения, правила валидации, конфигурация профилей и справочник ошибок для Workload Identity Federation.
Эта страница собирает поверхности конфигурации, ограничения валидации и сопоставления ошибок для Workload Identity Federation. Пошаговые руководства по настройке см. в руководствах по провайдерам.
Запрос обмена токенами
POST /v1/oauth/token принимает тело JSON с использованием гранта jwt-bearer из RFC 7523. SDK формирует этот запрос за вас на основе переменных окружения; примеры cURL в каждом руководстве по провайдеру показывают необработанное тело запроса.
| Поле | Обязательное | Описание |
|---|---|---|
grant_type | Да | Всегда urn:ietf:params:oauth:grant-type:jwt-bearer. |
assertion | Да | OIDC JWT, выданный вашим провайдером идентификации. |
federation_rule_id | Да | Тегированный ID (fdrl_...) правила федерации, которое нужно проверить. |
organization_id | Да | UUID вашей организации Anthropic. |
service_account_id | Да | Тегированный ID (svac_...) целевой сервисной учётной записи. |
workspace_id | Условно | Тегированный ID (wrkspc_...) рабочего пространства, которым ограничивается выпущенный токен. Обязателен, если правило включено более чем для одного рабочего пространства. Если он опущен, сервер выбирает единственное включённое рабочее пространство правила. Литерал default также работает для рабочего пространства по умолчанию (Default Workspace) организации, но считается устаревшим; используйте ID wrkspc_... этого рабочего пространства. |
Ответ обмена токенами
POST /v1/oauth/token возвращает стандартный ответ токена OAuth 2.0 (RFC 6749 §5.1):
| Поле | Тип | Описание |
|---|---|---|
access_token | string | Короткоживущий токен Anthropic с префиксом sk-ant-oat01-.... Передавайте его как Authorization: Bearer <token>. |
token_type | string | Всегда Bearer. |
expires_in | integer | Секунды до истечения срока действия токена. |
scope | string | Область действия OAuth, предоставленная совпавшим правилом. |
Переменные окружения
SDK читает эти переменные для выполнения федеративного обмена токенами без аргументов конструктора.
| Переменная | Обязательная | Описание | Пример |
|---|---|---|---|
ANTHROPIC_FEDERATION_RULE_ID | Да | Тегированный ID правила федерации, которое нужно проверить. | fdrl_... |
ANTHROPIC_ORGANIZATION_ID | Да | UUID вашей организации Anthropic. Его можно найти в Claude Console в разделе Settings > Organization. | 00000000-0000-0000-0000-000000000000 |
ANTHROPIC_IDENTITY_TOKEN_FILE | Одна из _TOKEN_FILE или _TOKEN | Путь в файловой системе к JWT, выданному вашим провайдером идентификации (IdP). SDK перечитывает этот файл при каждом обмене, поэтому проецируемые токены, которые ротируются на диске, всегда актуальны. | /var/run/secrets/anthropic.com/token |
ANTHROPIC_IDENTITY_TOKEN | Одна из _TOKEN_FILE или _TOKEN | Сам JWT в виде строки. Используйте, когда ваша платформа внедряет токен как переменную окружения, а не как файл. | eyJhbGciOiJSUzI1NiIs... |
ANTHROPIC_SERVICE_ACCOUNT_ID | Да | Тегированный ID целевой сервисной учётной записи Anthropic, от имени которой действует выданный токен доступа. | svac_... |
ANTHROPIC_WORKSPACE_ID | Условно | Тегированный ID рабочего пространства, которым ограничивается выпущенный токен. Обязателен, если правило федерации включено более чем для одного рабочего пространства; необязателен, если правило привязано к одному рабочему пространству. Выпущенный токен ограничивается этим рабочим пространством в момент обмена, поэтому для смены рабочего пространства требуется новый обмен. Литерал default также работает для рабочего пространства по умолчанию, но считается устаревшим; используйте его ID wrkspc_.... | wrkspc_... |
ANTHROPIC_PROFILE | Нет | Имя профиля конфигурации для загрузки. Имеет приоритет над переменными окружения федерации из этой таблицы. | staging-profile |
Прямой путь федерации через переменные окружения активируется только тогда, когда ANTHROPIC_FEDERATION_RULE_ID, ANTHROPIC_ORGANIZATION_ID, ANTHROPIC_SERVICE_ACCOUNT_ID и одна из ANTHROPIC_IDENTITY_TOKEN_FILE или ANTHROPIC_IDENTITY_TOKEN все установлены. ANTHROPIC_WORKSPACE_ID читается наряду с ними, но не управляет активацией.
Приоритет учётных данных
SDK разрешает учётные данные в этом порядке. Побеждает первый источник, который даёт учётные данные.
| Порядок | Источник | Примечания |
|---|---|---|
| 1 | Аргумент конструктора (api_key=, auth_token=, credentials=) | Всегда переопределяет всё остальное. |
| 2 | ANTHROPIC_API_KEY или ANTHROPIC_AUTH_TOKEN | Полностью затеняет федерацию. Сбросьте их при миграции с ключей API. |
| 3 | ANTHROPIC_PROFILE | Загружает <config_dir>/configs/<name>.json. Отсутствующий именованный профиль — это ошибка, а не переход дальше. |
| 4 | Переменные окружения федерации | ANTHROPIC_FEDERATION_RULE_ID + ANTHROPIC_ORGANIZATION_ID + ANTHROPIC_SERVICE_ACCOUNT_ID + ANTHROPIC_IDENTITY_TOKEN[_FILE]. |
| 5 | Активный профиль | Разрешается из <config_dir>/active_config, с откатом к профилю с именем default. |
Когда профиль загружен, переменные окружения заполняют любые поля, которые профиль опускает, но никогда не переопределяют поля, которые профиль устанавливает явно. Например, ANTHROPIC_WORKSPACE_ID заполняет workspace_id только тогда, когда активный профиль его не устанавливает.
Файл конфигурации профиля
Профиль — это именованный файл конфигурации, который читают и SDK, и CLI ant. Профили позволяют вам поставлять параметры федерации вместе с образом контейнера или переключаться между окружениями без изменения кода.
Каталог конфигурации
SDK находит каталог конфигурации в этом порядке:
$ANTHROPIC_CONFIG_DIR~/.config/anthropicв Linux и macOS%APPDATA%\Anthropicв Windows
Активный профиль
Имя активного профиля разрешается в этом порядке:
$ANTHROPIC_PROFILE- Содержимое
<config_dir>/active_config(однострочный файл, записываемыйant profile activate <name>) - Литеральное имя
default
Claude Code и Claude Agent SDK соблюдают этот же порядок разрешения, поэтому профиль федерации, настроенный здесь, также аутентифицирует эти инструменты без дополнительной настройки.
Структура файлов
| Путь | Содержимое | Чувствительность |
|---|---|---|
<config_dir>/configs/<profile>.json | version, блок authentication, organization_id, workspace_id и base_url. | Несекретно. Безопасно коммитить или встраивать в образ. |
<config_dir>/credentials/<profile>.json | version, кэшированный access_token, expires_at и (для интерактивного входа) refresh_token. | Секретно. Записывается SDK с режимом 0600. |
И файл конфигурации, и файл учётных данных несут строковое поле version верхнего уровня в формате major.minor (в настоящее время "1.0"). SDK записывает это поле автоматически, чтобы будущие выпуски могли обнаруживать и мигрировать более старые форматы; опустите его при создании конфигурации вручную, и SDK будет рассматривать файл как текущую версию.
Пример профиля федерации
{
"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"
}Если authentication.identity_token опущено, SDK откатывается к ANTHROPIC_IDENTITY_TOKEN_FILE или ANTHROPIC_IDENTITY_TOKEN из окружения.
Области действия OAuth
oauth_scope, который вы устанавливаете для правила федерации, определяет, какие конечные точки Claude API может вызывать выпущенный токен доступа.
| Область действия | Предоставляет доступ к |
|---|---|
workspace:developer | Все неадминистративные конечные точки Claude API в рабочем пространстве правила: Messages (включая потоковую передачу и подсчёт токенов), Models, Managed Agents и их сессии, Files и Skills. Это соответствует доступу, который имеет ключ API рабочего пространства в том же рабочем пространстве. |
workspace:inference | Конечные точки вывода в рабочем пространстве правила: Messages (включая потоковую передачу и подсчёт токенов), Models и OpenAI-совместимая конечная точка чата. Используйте это для рабочих нагрузок, которым нужно только вызывать Claude и никогда не нужно управлять Files, Skills или другими ресурсами. |
workspace:manage_tunnels | API туннелей MCP: создание, перечисление и получение туннелей, регистрация и архивирование сертификатов CA, раскрытие и ротация токена туннеля, а также архивирование туннелей. Модальное окно создания туннеля в Console блокирует эту область действия, когда вы создаёте правило из него. |
org:admin | Полный доступ к Admin API (члены организации, приглашения, рабочие пространства, ключи API и остальное). Токен OAuth org:admin может создавать или изменять только правила с областью действия workspace:developer или workspace:inference и не может обновлять эмитента, который поддерживает правило с любой другой областью действия; см. ограничения. |
Запрос к конечной точке вне области действия токена возвращает HTTP 403. Более детализированные области действия (по ресурсу или чтение против записи) в настоящее время недоступны.
Границы разрешений
oauth_scope правила федерации — это потолок: выпущенный токен никогда не может его превысить. organization_role целевой сервисной учётной записи (developer или admin) определяет, какие области действия можно предоставить, поэтому правило, предоставляющее org:admin, должно нацеливаться на сервисную учётную запись с organization_role=admin. Эффективные разрешения — это пересечение области действия правила и роли сервисной учётной записи.
oauth_scope правила | organization_role сервисной учётной записи | Эффективные разрешения |
|---|---|---|
workspace:developer | admin | Доступ к Claude API только в рабочем пространстве правила. Область действия ограничивает токен ниже роли. |
org:admin | admin | Полный доступ к Admin API (члены организации, приглашения, рабочие пространства, ключи API и остальное), за вычетом исключений для вызывающего OAuth; см. ограничения. |
Правила валидации
Anthropic применяет эти ограничения, когда вы создаёте или обновляете эмитентов и правила, а также при проверке входящего JWT во время обмена.
Полные сведения о параметрах и схемах ответов см. в справочнике по API сервисных учётных записей, справочнике по API эмитентов федерации и справочнике по API правил федерации.
Поля ресурсов
| Поле | Ограничение |
|---|---|
name эмитента, правила и сервисной учётной записи | Должно соответствовать ^[a-z0-9-]+$, длина от 1 до 255 символов. |
workspace_id | Требуется при создании, если applies_to_all_workspaces не равно true. Рабочее пространство (wrkspc_...), чьи квота, биллинг и ограничения скорости применяются к токенам, выпущенным по этому правилу. Должно быть рабочим пространством в той же организации, и целевая сервисная учётная запись должна быть членом этого рабочего пространства. |
applies_to_all_workspaces | Булево значение. Установите true, чтобы включить правило в каждом рабочем пространстве организации вместо указания одного; при создании требуется либо это, либо workspace_id. |
token_lifetime_seconds | Целое число между 60 и 86400 (от 1 минуты до 24 часов). По умолчанию 3600. Значения вне этого диапазона отклоняются во время запроса. См. Время жизни и обновление токена. |
Поля URL
Поля issuer_url, jwks.discovery_base и jwks.url валидируются:
| Ограничение | Деталь |
|---|---|
| Схема | Должна быть https. |
| Порт | Должен быть 443 (явный или по умолчанию). |
| Хост | Должен быть публичным DNS-именем хоста для вашего OIDC-провайдера. Должен разрешаться в публичные IP-адреса; IP-литералы не принимаются. |
Сбои валидации URL возвращают 400 invalid_request_error с именем поля в качестве префикса в сообщении об ошибке (например, issuer_url: url must use https scheme).
Проверка JWT
| Ограничение | Подробности |
|---|---|
| Максимальный размер | JWT assertion должен быть не более 16 КиБ. |
| Алгоритм подписи | Принимаются только асимметричные алгоритмы (семейства RSA и ECDSA: ES256, ES384, ES512, RS256, RS384, RS512, PS256, PS384, PS512). HMAC (HS256, HS384, HS512) и none отклоняются. |
| ID ключа | Заголовок JWT должен содержать kid, соответствующий ключу в JWKS эмитента. Токены без kid отклоняются. |
| Обязательные утверждения | sub должно присутствовать. iat должно присутствовать и не находиться в будущем. exp должно присутствовать и находиться в будущем. |
| Однократное использование | Утверждение, содержащее утверждение jti, может быть обменено только один раз для каждого эмитента: повторный обмен с тем же jti отклоняется как повтор. Поле эмитента check_jti (включено по умолчанию) управляет этой проверкой; утверждения без jti ей не подлежат. См. справочник по API эмитентов федерации. |
| Максимальное время жизни | Время жизни токена (exp минус iat) не должно превышать настроенный максимум эмитента (по умолчанию 1 час, настраивается для каждого эмитента в Claude Console). |
| Расхождение часов | К exp, nbf и iat применяется допуск в 30 секунд. |
Семантика сопоставления правил
Блок match правила федерации определяет, принимается ли входящий JWT. Все заполненные поля оцениваются с семантикой AND: JWT должен удовлетворять каждому заполненному сопоставителю. Должно быть установлено хотя бы одно из subject_prefix, claims или condition; блок match, содержащий только audience (или вообще без сопоставителей), отклоняется. Это защищает от правил, которые принимали бы каждый токен от эмитента.
| Сопоставитель | Тип | Семантика |
|---|---|---|
subject_prefix | string | Точное совпадение с утверждением JWT sub. Завершающая * делает его совпадением по префиксу (значение sub должно начинаться с символов перед *). Чувствительно к регистру. |
audience | string | Утверждение JWT aud должно содержать эту точную строку. Когда aud является массивом, любой элемент, точно совпадающий, удовлетворяет проверке. |
claims | map<string, string> | Каждый ключ — это имя утверждения верхнего уровня, а каждое значение — требуемое точное строковое значение. Для вложенных, числовых, булевых или сложных утверждений, таких как списки и карты, используйте вместо этого condition с выражением CEL. |
condition | string (CEL) | Выражение CEL, которое должно оцениваться как true. |