跳转到内容

身份验证

身份 非官方简体中文镜像
翻译状态 AI 翻译 / AI 审校
来源版本 官方未提供
同步日期 2026-07-31
官方原文 learn.chatgpt.com

如需完整文档索引,请参阅 llms.txt。文档页面的 Markdown 版本可通过在页面后追加 .md 来获取 URL。

Codex 在使用 OpenAI 模型时支持两种登录方式:

  • 使用 ChatGPT 登录以获得订阅访问权限
  • 使用 API 密钥登录以获得按使用量计费的访问权限

该 ChatGPT 桌面应用、 Codex CLI和 IDE 扩展支持这两种登录 方式,用于本地工作。 Codex cloud 需要使用 ChatGPT登录。

你的登录方式还会决定适用哪些管理员控制和数据处理政策。

  • 当你使用 ChatGPT登录时, Codex 使用会遵循你的 ChatGPT 工作区 权限、基于角色的访问控制(RBAC)以及 ChatGPT Enterprise 保留和驻留设置。
  • 使用 API 密钥时,使用则会遵循你的 API 组织的保留和 数据共享设置。

对于托管工作区,身份验证只是访问控制的一层。工作区 成员资格和预配决定谁可以登录,而席位和 工作区角色决定他们可以使用哪些产品界面和功能。 对于在 ChatGPT 桌面应用、 Codex CLI或 IDE 扩展 中的本地工作,权限配置文件会限制 Agent 在设备上可以执行的操作。请参阅 组和预配 以及 角色和工作区权限 来规划这些控制。

当你使用 ChatGPT 从 ChatGPT 桌面应用、 Codex CLI或 IDE 扩展登录时,登录流程会打开一个浏览器窗口。登录后,浏览器会将你的凭据返回给 Codex。

打开 ChatGPT,登录,并选择你 想要工作的工作区。 ChatGPT 网页版会在你的浏览器中保留已认证的会话。

在已退出登录的屏幕上,选择 继续登录,然后完成 浏览器流程。

运行 codex login,然后完成浏览器流程。这是没有有效会话可用时的默认 身份验证路径。

在已退出登录的屏幕上,选择 使用 ChatGPT登录,然后完成 浏览器流程。

你也可以使用 ChatGPT 桌面应用、 Codex CLI或 IDE 扩展,通过 API 密钥登录。从 API 密钥 OpenAI 仪表板获取你的

在已退出登录的屏幕上,选择 使用其他方式登录,输入你的密钥,然后 选择 继续

将密钥通过管道传递给 codex login 通过 stdin:

Terminal window
printenv OPENAI_API_KEY | codex login --with-api-key

在已退出登录的屏幕上,选择 使用 API 密钥,输入你的密钥,然后选择 OK

OpenAI 会对 API 密钥使用量通过你的 OpenAI Platform 账户按标准 API 费率计费。请参阅 API 定价页面

API 密钥身份验证支持本地 Codex 工作流,但一些 依赖 ChatGPT 工作区访问权限或云服务的功能会受限或不可用。 在 功能可用性中按方案比较支持情况。

在 Codex CLI 和 Codex 中的 ChatGPT 桌面应用中, API 密钥身份验证 包含对受支持的 OpenAI精选插件的访问权限。部分插件 不可用,因为其连接流程需要不受支持的 OAuth 能力。请参阅 使用插件

当你使用 API 密钥登录时, Codex 会使用标准 API 定价,而不是 包含的 ChatGPT 方案额度。

将 API 密钥身份验证用于程序化 Codex CLI 工作流,例如 CI/CD 作业。不要暴露 Codex 在不受信任或公开环境中的执行。

打开个人资料菜单,确认当前账户和工作区。要结束该浏览器中的 ChatGPT 网页会话,请选择 退出登录

打开个人资料菜单,查看当前账户或 API 密钥状态。选择 退出登录 以清除当前凭据。

运行 codex login status 以查看当前身份验证方法。运行 codex logout 以清除当前凭据。

打开个人资料菜单,查看当前账户或 API 密钥状态。选择 退出登录 以清除当前凭据。

使用 Codex 访问令牌进行企业自动化

Section titled “使用 Codex 访问令牌进行企业自动化”

在 ChatGPT Enterprise 工作区中,管理员可以授予访问令牌 权限,使获准成员能够创建 Codex 访问令牌,用于受信任的、 非交互式 Codex 本地工作流。当自动化 需要 ChatGPT 工作区访问、 ChatGPT管理的 Codex 权益,或 无需浏览器登录即可使用的企业工作区控制时,请使用访问令牌。

访问令牌适用于受信任的脚本、调度器和私有 CI 运行器。对于一般 OpenAI API 调用,请继续使用 Platform API 密钥。

有关设置步骤、权限、轮换和撤销指南,请参阅 访问令牌

如果你的环境已经提供 Codex 访问令牌,请将其通过管道传递给 CLI:

Terminal window
printenv CODEX_ACCESS_TOKEN | codex login --with-access-token

Codex cloud 会直接与你的代码库交互,因此它需要比许多其他 ChatGPT 功能更强的安全性。启用多因素身份验证(MFA)。

如果你使用社交登录提供商(Google、Microsoft、Apple),则不需要启用 MFA 在你的 ChatGPT 账户上,但可以通过你的社交登录提供商进行设置。

有关设置说明,请参阅:

如果你访问 ChatGPT 是通过单点登录(SSO),你组织的 SSO 管理员应为所有用户强制启用 MFA 。

如果你使用电子邮件和密码登录,则必须先设置 MFA 到你的账户上,然后才能访问 Codex cloud。

如果你的账户支持多种登录方法,且其中一种是电子邮件和密码,则必须先设置 MFA 然后才能访问 Codex,即使你使用其他方式登录也是如此。

当你登录到 ChatGPT 桌面应用、 Codex CLI或 IDE 扩展,并使用 ChatGPT 或 API 密钥时,你的登录详细信息会被缓存并重复使用。 CLI 和扩展共享相同的缓存登录详细信息。如果你从其中任意一个退出登录,下次启动 CLI 或扩展时需要重新登录。

Codex 会将登录详细信息以纯文本文件形式本地缓存在 ~/.codex/auth.json 或你的 OS专用凭据存储中。

对于使用 ChatGPT 会话登录, Codex 会在使用期间、令牌过期前自动刷新令牌,因此活动会话通常会继续,而不需要再次通过浏览器登录。

使用 cli_auth_credentials_store 来控制 Codex CLI 存储缓存凭据的位置:

# file | keyring | auto
cli_auth_credentials_store = "keyring"
  • file 将凭据存储在 auth.json 下的 CODEX_HOME 中(默认为 ~/.codex)。
  • keyring 将凭据存储在你的操作系统凭据存储中。
  • auto 可用时使用 OS 凭据存储,否则回退到 auth.json

请参阅 配置参考 以了解完整的 config.toml 架构。

如果使用基于文件的存储,请将 ~/.codex/auth.json 像密码一样对待:它 包含访问令牌。不要提交它、粘贴到工单中,或在 聊天中分享。

在托管环境中,管理员可以限制用户允许使用的身份验证方式:

# Only allow ChatGPT login or only allow API key login.
forced_login_method = "chatgpt" # or "api"
# When using ChatGPT login, restrict users to a specific workspace.
forced_chatgpt_workspace_id = "00000000-0000-0000-0000-000000000000"

如果当前凭据与配置的限制不匹配, Codex 会将用户退出登录并退出。

这些设置通常通过托管配置应用,而不是由每个用户单独设置。请参阅 托管配置

直接 codex login 运行会写入专用的 codex-login.log 文件,位置在 你配置的日志目录下。当你需要调试浏览器登录或 设备代码失败,或支持人员要求提供登录专用日志时,请使用它。

如果你的网络使用企业 TLS 代理或私有根 CA,请在登录前将 CODEX_CA_CERTIFICATE 设置为 PEM 捆绑包。当 CODEX_CA_CERTIFICATE 未设置时, Codex 会回退到 SSL_CERT_FILE。相同的 自定义 CA 设置适用于登录、普通 HTTPS 请求和安全 WebSocket 连接。

Terminal window
export CODEX_CA_CERTIFICATE=/path/to/corporate-root-ca.pem
codex login

如果你正在登录 ChatGPT 并使用 Codex CLI,在某些情况下,基于浏览器的登录 UI 可能无法工作:

  • 你正在运行 CLI 在远程或无头环境中。
  • 你的本地网络配置阻止了 localhost 回调 Codex ,该回调用于返回 OAuth 令牌给 CLI 在你登录后。

在这些情况下,优先使用设备代码身份验证(beta)。在交互式登录 UI中,选择 使用设备代码登录,或直接运行 codex login --device-auth 。如果设备代码身份验证在你的环境中不可用,请使用其中一种回退方法。

首选:设备代码身份验证(beta)

Section titled “首选:设备代码身份验证(beta)”
  1. 在你的 ChatGPT 安全设置(个人账户)或 ChatGPT 工作区权限(工作区管理员)中启用设备代码登录。
  2. 在运行 Codex的终端中,选择以下选项之一:
    • 在交互式登录 UI中,选择 使用设备代码登录
    • 运行 codex login --device-auth
  3. 在浏览器中打开链接,登录,然后输入一次性代码。

如果设备代码登录在你的环境中不可用,请使用下面的 回退方法之一。

回退:在本地进行身份验证并复制你的身份验证缓存

Section titled “回退:在本地进行身份验证并复制你的身份验证缓存”

如果你可以在有浏览器的机器上完成登录流程,就可以将缓存的凭据复制到无头机器。

  1. 在可以使用基于浏览器的登录流程的机器上,运行 codex login
  2. 确认登录缓存存在于 ~/.codex/auth.json
  3. ~/.codex/auth.json 复制到 ~/.codex/auth.json 无头机器上。

~/.codex/auth.json 像密码一样对待:它包含访问令牌。不要提交它、粘贴到工单中,或在聊天中分享。

如果你的 OS 将凭据存储在凭据存储中,而不是 ~/.codex/auth.json,此方法可能不适用。请参阅 凭据存储 了解如何配置基于文件的存储。

通过以下方式复制到远程机器: SSH:

Terminal window
ssh user@remote 'mkdir -p ~/.codex'
scp ~/.codex/auth.json user@remote:~/.codex/auth.json

或者使用避免 scp的单行命令:

Terminal window
ssh user@remote 'mkdir -p ~/.codex && cat > ~/.codex/auth.json' < ~/.codex/auth.json

复制到 Docker 容器中:

Terminal window
# Replace MY_CONTAINER with the name or ID of your container.
CONTAINER_HOME=$(docker exec MY_CONTAINER printenv HOME)
docker exec MY_CONTAINER mkdir -p "$CONTAINER_HOME/.codex"
docker cp ~/.codex/auth.json MY_CONTAINER:"$CONTAINER_HOME/.codex/auth.json"

有关在受信任 CI/CD 运行器上使用相同模式的更高级版本,请参阅 维护 Codex 账户身份验证于 CI/CD (高级)。 该指南说明如何让 Codex 刷新 auth.json 在正常运行期间,并 随后保留更新后的文件,以供下一个作业使用。 API 密钥仍然是自动化的推荐 默认方式。

回退:通过以下方式转发 localhost 回调 SSH

Section titled “回退:通过以下方式转发 localhost 回调 SSH”

如果你可以在本地机器和远程主机之间转发端口,就可以通过隧道传输 Codex的本地回调服务器(默认 localhost:1455)来使用标准的基于浏览器的流程。

  1. 从你的本地机器启动端口转发:
Terminal window
ssh -L 1455:localhost:1455 user@remote
  1. 在该 SSH 会话中,运行 codex login 并在你的本地机器上按照打印的地址操作。

当你 定义一个自定义模型提供商 到配置文件中时,可以选择以下身份验证方法之一:

  • OpenAI 身份验证:设置 requires_openai_auth = true 以使用 OpenAI 身份验证。然后你可以使用 ChatGPT 或 API 密钥登录。当你访问 OpenAI 模型通过 LLM 代理服务器时,这很有用。当 requires_openai_auth = true, Codex 会忽略 env_key
  • 环境变量身份验证:设置 env_key = "<ENV_VARIABLE_NAME>" 以使用特定于提供商的 API 密钥,该密钥来自名为 <ENV_VARIABLE_NAME>的本地环境变量。
  • 无身份验证:如果你未设置 requires_openai_auth (或将其设置为 false),并且未设置 env_key, Codex 会假定该提供商不需要身份验证。这对本地模型很有用。