Claude Platform Docs

フェデレーションルールを作成

FederationRule organization().federation().rules().create(params, requestOptions = RequestOptions.none())
POST/v1/organizations/federation_rules

org:adminスコープを持つOAuthアクセストークンが必要です。このトークンはant auth login --scope org:adminまたはワークロードアイデンティティフェデレーションルールから取得します。Admin APIキーは受け付けられません。Admin APIでWIFを管理するを参照してください。

組織が所有するフェデレーションルールを作成します。

参照される発行者と対象のサービスアカウントは、同じ組織内にすでに存在している必要があります。 無効な参照は400エラーで拒否されます。ワークスペースの参照は検証されます。 ルール作成時にメンバーシップはチェックされません。トークン交換は呼び出しごとに有効な ワークスペースを1つ解決し、対象のサービスアカウントがそのワークスペースのメンバーでない限り 拒否されます(デフォルトワークスペースには暗黙的にメンバーとなっています)。 よく知られた共有発行者(GitHub Actions、GitLab、Buildkite、Terraform Cloud、Google)に対する ルールは、アイデンティティを含むクレーム、テナントを固定するサブジェクトプレフィックス (repo:YOUR_ORG/...など)、またはそれらのアイデンティティクレームのいずれかを参照する CEL条件(例:claims.repository_owner)によって、テナントのアイデンティティを制約する必要があります。 OAuth呼び出し元が管理できるのは、oauth_scopeがworkspace:developerまたは workspace:inferenceであるルールのみです。その他のスコープにはConsoleセッションが必要です。

Parameters
RuleCreateParams params
String issuerId

Tagged ID of the federation issuer.

Conditions the verified JWT must satisfy for this rule to apply. At least one of subject_prefix (other than a wildcard-only value like *), claims, or condition is required; audience alone is not sufficient.

String name

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

minLength1
maxLength255
String oauthScope

Space-separated OAuth scopes. OAuth callers may only set workspace:developer or workspace:inference; other scopes (such as org:admin) require a Console session.

minLength1

Identity that tokens minted via this rule act as. Currently always a service_account target.

Optional<Boolean> appliesToAllWorkspaces

When true, enable this rule for every workspace in the org (including workspaces created later).

Optional<String> description

Optional free-text description.

maxLength2000
Optional<Long> tokenLifetimeSeconds

Lifetime in seconds for access tokens minted via this rule (60-86400). Defaults to 3600 (1h). Minted tokens are capped at max(60, min(this value, 2 × remaining assertion validity)) seconds.

minimum60
maximum86400
Optional<String> workspaceId

Tagged ID of the workspace to enable this rule for. Required unless applies_to_all_workspaces is true. Additional workspaces can be added via the /federation_rules/{federation_rule_id}/workspaces sub-resource.

Returns
class FederationRule { type = "federation_rule"; id; appliesToAllWorkspaces; /* 15 more */ }

Authorization rule binding an external OIDC identity to Anthropic.

Evaluates the match conditions and mints an OAuth access token for the resolved target, scoped to a single workspace where the rule is enabled (chosen by the caller at exchange time when the rule is enabled for more than one). For rules enabled via workspace_ids or applies_to_all_workspaces, the target service account must be a member of that workspace (it is implicitly a member of the default workspace); rules carrying only the legacy workspace_id binding do not enforce this.

フェデレーションルールを作成
package com.anthropic.example;

import com.anthropic.client.AnthropicClient;
import com.anthropic.client.okhttp.AnthropicOkHttpClient;
import com.anthropic.models.organization.federation.rules.FederationRule;
import com.anthropic.models.organization.federation.rules.FederationRuleMatch;
import com.anthropic.models.organization.federation.rules.RuleCreateParams;
import com.anthropic.models.organization.federation.rules.ServiceAccountTarget;

public final class Main {
    private Main() {}

    public static void main(String[] args) {
        AnthropicClient client = AnthropicOkHttpClient.fromEnv();

        RuleCreateParams params = RuleCreateParams.builder()
            .issuerId("issuer_id")
            .match(FederationRuleMatch.builder().build())
            .name("x")
            .oauthScope("x")
            .target(ServiceAccountTarget.of("svac_01SDCCSbTxrXDpWc1phhtcfK"))
            .build();
        FederationRule federationRule = client.organization().federation().rules().create(params);
    }
}
Returns Examples
Response 200
{
  "id": "fdrl_01SDCCSbTxrXDpWc1phhtcfK",
  "applies_to_all_workspaces": true,
  "archived_at": "2019-12-27T18:11:19.117Z",
  "archived_by_actor_id": "archived_by_actor_id",
  "attributes": {
    "foo": "string"
  },
  "created_at": "2024-10-30T23:58:27.427722Z",
  "created_by_actor_id": "created_by_actor_id",
  "description": "description",
  "issuer_id": "issuer_id",
  "issuer_name": "issuer_name",
  "match": {
    "audience": "audience",
    "claims": {
      "foo": "string"
    },
    "condition": "condition",
    "subject_prefix": "subject_prefix"
  },
  "name": "prod-deploy-pipeline",
  "oauth_scope": "oauth_scope",
  "target": {
    "service_account_id": "svac_01SDCCSbTxrXDpWc1phhtcfK",
    "type": "service_account",
    "service_account_name": "service_account_name"
  },
  "token_lifetime_seconds": 0,
  "type": "federation_rule",
  "updated_at": "2024-10-30T23:58:27.427722Z",
  "updated_by_actor_id": "updated_by_actor_id",
  "workspace_id": "workspace_id",
  "workspace_ids": [
    "string"
  ]
}