> ## Documentation Index
> Fetch the complete documentation index at: https://docs.devinenterprise.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 使用 OIDC 进行云身份验证

> 通过 OpenID Connect 为 Devin 提供对云服务的短期无密钥访问

Devin 可通过 OpenID Connect (OIDC) 工作负载身份联合向云服务进行身份验证，无需使用长期凭据。每个 Devin 会话都会获得由 Devin 签发的短期身份令牌，云服务提供商会验证该令牌并将其交换为临时凭据。无需在 Devin 中存储静态 API 密钥或 secrets。

<div id="how-it-works">
  ## 工作原理
</div>

1. 每个 Devin 会话都会自动获得一个短期有效的**身份令牌**。该令牌由 Devin 签名，并在会话存续期间持续刷新。
2. 你的云服务提供商会根据 Devin 的公开 OIDC 签发方验证该令牌，并授予临时的、限定作用域的访问权限。

令牌会通过 `org_id`、`devin_id` 和 `requesting_user_email` 等声明标识会话，因此你可以编写信任策略，向你的组织、特定会话或用户授予访问权限。令牌会自动过期，无需轮换或撤销。

<div id="setup-actions">
  ## 配置 action
</div>

将相应的 action 添加到你的[环境蓝图](/zh/onboard-devin/environment/blueprints)的 `initialize` 部分：

| Action                                                                                  | 目的                                                        |
| --------------------------------------------------------------------------------------- | --------------------------------------------------------- |
| [`setup-aws-oidc`](https://github.com/CognitionAI/actions/tree/main/setup-aws-oidc)     | 通过 IAM `AssumeRoleWithWebIdentity` 对 AWS CLI 和 SDK 进行身份验证 |
| [`setup-gcp-oidc`](https://github.com/CognitionAI/actions/tree/main/setup-gcp-oidc)     | 通过工作负载身份联合对 gcloud 和 Google Cloud SDK 进行身份验证              |
| [`setup-vault-oidc`](https://github.com/CognitionAI/actions/tree/main/setup-vault-oidc) | 通过 JWT/OIDC 身份验证方法对 HashiCorp Vault CLI 进行身份验证            |
| [`setup-jfrog-oidc`](https://github.com/CognitionAI/actions/tree/main/setup-jfrog-oidc) | 通过 JFrog 的 OIDC 令牌交换对 JFrog CLI 进行身份验证                    |
| [`setup-devin-oidc`](https://github.com/CognitionAI/actions/tree/main/setup-devin-oidc) | 提供基础 `devin-oidc` CLI，适用于信任 Devin 作为身份提供商的服务              |

<div id="example-aws">
  ### 示例：AWS
</div>

```yaml theme={null}
initialize:
  - uses: github.com/CognitionAI/actions/setup-aws-oidc@main
    with:
      role-arn: "arn:aws:iam::123456789012:role/devin-sessions"
      region: "us-east-1"
```

随后，Devin 无需存储任何凭据即可执行 AWS 命令：

```bash theme={null}
aws sts get-caller-identity
```

有关 AWS 端所需的完整前置条件和配置选项，请参阅 [`setup-aws-oidc` 文档](https://github.com/CognitionAI/actions/tree/main/setup-aws-oidc)。

<div id="example-custom-services">
  ### 示例：自定义服务
</div>

对于你自己的 API 和内部服务，请使用基础 CLI 为服务接受的任意受众请求令牌：

```bash theme={null}
devin-oidc token --audience my-api --subject-keys "org_id"
```

将你的服务配置为信任 Devin 的 OIDC 签发方，并使用其发布在 `/.well-known/jwks.json` 的 JWKS 验证令牌。签发方是你的 Devin webapp 源地址：`https://app.devin.ai`；对于企业部署，则是你自己的域名 (例如 `https://yourdomain.devinenterprise.com`) 。

<div id="token-claims">
  ## 令牌声明
</div>

令牌包含以下身份声明。你可以在信任策略中引用这些声明，并通过 `subject-keys` 将其用于构成令牌主体。主体由所选声明的 `key:value` 对组成——例如，`--subject-keys "org_id"` (默认值) 会生成类似 `org_id:a67b8de8-9483-4a9c-9662-51c3d2a45e88` 的主体。

| 声明                                             | 描述                                  |
| ---------------------------------------------- | ----------------------------------- |
| `org_id`                                       | 启动会话所在的组织                           |
| `account_id`                                   | 账户 (Enterprise 或单组织客户) 标识符          |
| `devin_id`                                     | Devin 会话 ID                         |
| `devin_trigger`                                | 会话的启动方式 (例如 `webapp`、`slack`、`api`) |
| `requesting_user_id` / `requesting_user_email` | 启动会话的用户                             |
| `service_user_id`                              | 服务用户，用于通过 API 启动的会话                 |

<div id="security-properties">
  ## 安全属性
</div>

* **无长期凭据**：令牌有效期较短，并会自动刷新；会话结束后无需轮换或撤销任何凭据。
* **限定作用域的访问权限**：受众限定令牌仅对其所请求的特定服务有效；你的信任策略可精确控制哪些身份可被授予访问权限。
* **可审计的身份**：令牌包含会话、组织和请求用户的信息，因此云端审计日志可将每项操作归属到特定的 Devin 会话。

<Note>
  使用自定义域名的企业部署拥有每个账户专用的签名密钥，令牌签发方为你的自定义 Devin URL。请联系你的 Devin 管理员或 Cognition 支持团队，获取签发方 URL 和组织 ID。
</Note>
