PyCharm 2025.3 Help

OAuth 2.0 授权

HTTP 客户端支持 OAuth 2.0 授权。 您可以获取访问令牌,并对请求进行身份验证以访问受 OAuth 2.0 保护的资源。 为便于您输入用户凭据,HTTP 客户端会在内置的 JCEF 浏览器中显示登录表单。 该非模态浏览器不会阻止您在 IDE 中工作,例如,您可以复制并粘贴用户名和密码。

典型流程包括以下步骤:

  1. 指定身份验证设置 ,例如授权类型和令牌 URL,以 JSON 格式写入公共环境文件中。

  2. 引用此身份验证配置 ,在 HTTP 请求中使用 $auth.token 变量。

  3. 运行该请求。 如果身份验证成功,您即可访问受保护的资源。 您可以在 HTTP 客户端身份验证日志服务 工具窗口中查看接收到的访问令牌和刷新令牌。

  4. 您还可以 手动刷新访问令牌 ,或通过 请求新令牌重新初始化身份验证过程。

创建身份验证配置

  1. .http 文件中,在 使用以下方式运行 列表中,选择要添加身份验证配置的环境。

  2. 在工具栏中,点击 添加图标 并选择 身份验证配置

    这会在所选环境的 "Security" 下的 "Auth" 对象中,向公共环境文件添加一个身份验证配置模板。 例如:

    { "dev": { "Security": { "Auth": { "auth-id": { "Type": "OAuth2", "Grant Type": "", "Client ID": "" } } } } }
  3. 将占位符 auth-id 替换为有意义的名称,您将在 .http 文件中使用该名称引用此配置。

  4. 指定 身份验证参数。 所需参数取决于所选 "Grant Type"。 在填写身份验证参数时,请使用 PyCharm 编码辅助:开始键入参数名称,或按 Ctrl+Space 以获取可用 JSON 键的列表。

在 HTTP 请求中使用身份验证配置

创建身份验证配置后,您可以使用它获取访问令牌,并对请求进行身份验证。

  1. 将身份验证配置的名称传递给 {{$auth.token()}} 变量,例如, {{$auth.token("my-config")}}。 您可以在请求 Authorization 标头或查询参数中使用此变量。

  2. 点击 运行 以发送请求。 在访问受保护资源之前,HTTP 客户端会向授权服务器发送请求以获取访问令牌。

  3. 当出现提示时,完成身份验证过程。 如果身份验证成功完成,HTTP 客户端将访问受保护的资源。

要快速添加 {{$auth.token()}} 变量,您可以使用实时模板:在 HTTP 方法下的标头部分,开始键入 AuthorizationToken ,并从出现的建议列表中选择可用的身份验证。

HTTP 客户端身份验证配置

运行此类请求时, 显示身份验证日志 按钮将在 服务 工具窗口中可用。 它可让您查看重定向页面、访问令牌以及其他身份验证详细信息。

手动获取访问令牌

当您在 HTTP 请求中引用身份验证配置时,HTTP 客户端会在访问受保护资源之前自动获取(或刷新)访问令牌。 如果您希望在不向受保护资源发送实际请求的情况下获取访问令牌,您可以手动获取访问令牌。

  1. http-client.env.json 文件中,点击身份验证配置名称旁边的 运行

  2. 如果身份验证配置包含 私有变量 ,请在出现的弹出窗口中选择一个私有环境文件。

  3. 当出现提示时,完成身份验证过程。

如果身份验证成功完成,PyCharm 将获取访问令牌。 如果您已经拥有访问令牌,但该令牌已过期,PyCharm 将刷新它。

获取新访问令牌

除了刷新令牌之外,您还可以通过重新进行身份验证来获取新令牌,即重复用于获取初始访问令牌的原始流程。

  1. http-client.env.json 文件中,将插入符号置于身份验证配置名称上。

  2. Alt+Enter (显示上下文操作 ),并选择 强制获取身份验证令牌

  3. 如果身份验证配置包含 私有变量 ,请在出现的弹出窗口中选择一个私有环境文件。

当您的插入符号位于 .http 文件中的 $auth.token 变量上时,您可以调用相同的操作。 在这种情况下,您无需选择私有环境文件,因为 HTTP 客户端会使用与您的 .http 文件位于同一文件夹中的该文件。

当您刷新或获取新令牌时,访问令牌、刷新令牌以及其他身份验证详细信息会显示在 HTTP 客户端身份验证日志 工具窗口 (视图 | 工具窗口 | HTTP 客户端身份验证日志) 中。

HTTP 客户端身份验证日志工具窗口

清除浏览器 Cookie

您的授权服务器可能会将身份验证数据存储在浏览器的 Cookie 中。 如果您想使用不同的数据测试身份验证流程,可能需要清除内置 JCEF 浏览器的 Cookie。

  1. http-client.env.json 文件中,将插入符号置于身份验证配置名称上,并按 Alt+Enter (显示上下文操作)。

  2. 选择 清除浏览器 Cookie

或者,您可以在 HTTP 客户端身份验证日志 工具窗口中点击 清除 Cookie 来清除 Cookie。

使用 ID 令牌替代访问令牌

如果您的服务器要求使用 ID 令牌而不是访问令牌,您可以通过以下任一方式配置 HTTP 客户端以实现此目的:

  • 在您的身份验证配置中,使用 "Use ID Token": true 参数。

  • .http 文件中,使用 $auth.idToken 变量,例如, Authorization: Bearer {{$auth.idToken("auth-id-1")}}

使用自定义身份验证参数

HTTP 客户端提供定义自定义请求参数的选项,您的授权服务器可能需要这些参数。 例如,包括扩展 OAuth 2.0 授权框架的 resourceaudience

  1. 在您的身份验证配置中,添加 "Custom Request Parameters" 对象。

  2. "Custom Request Parameters" 内,输入参数名称和值(字符串或数组)。

  3. 如果您想将参数的使用限制为某些请求,请将该值定义为包含两个键的对象:

    • "Value" (参数值)

    • "Use" — 参数的使用范围。 它有三种可能的取值:

      • "Use": "Everywhere" (在任何请求中)

      • "Use": "In Auth Request" (仅在身份验证请求中)

      • "Use": "In Token Request" (仅在令牌请求中)

    例如:

    "auth-id-1": { "Type": "OAuth2", "Custom Request Parameters": { "audience": { "Value": "https://my-audience.com/", "Use": "In Token Request" }, "resource": [ "https://my-resource/resourceId1", "https://my-resource/resourceId2" ], "my-custom-parameter": "my-custom-value" }, }

使用 HTTP 客户端身份验证日志 工具窗口查看请求中使用的参数及其值。

使用自定义请求标头

HTTP 客户端提供使用自定义请求标头的选项,您的授权服务器可能需要这些标头。

  1. 在您的身份验证配置中,添加 "Custom Request Headers" 对象。

  2. "Custom Request Headers" 内,输入标头名称及其值。

    Ctrl+Space 可获取常用标头的建议列表,例如 AcceptCookieUser-Agent

  3. 如果您想将标头的使用限制为某些请求,请将该值定义为包含两个键的对象:

    • "Value" (标头值)

    • "Use" — 标头的使用范围。 它有三种可能的取值:

      • "Use": "Everywhere" (在任何请求中)

      • "Use": "In Auth Request" (仅在身份验证请求中)

      • "Use": "In Token Request" (仅在令牌请求中)

    例如:

    "auth-id-1": { "Type": "OAuth2", "Custom Request Headers": { "Accept": { "Use": "Everywhere", "Value": "application/javascript" }, "my-custom-header": "my-custom-value" }, }

身份验证配置参数

类型

身份验证类型。 可能的取值:

  • "OAuth2" :使用 OAuth2 对您的请求进行身份验证。

  • "Mock" (用于开发或测试环境):模拟身份验证过程 — PyCharm 将使用来自身份验证配置的令牌,而非由 OAuth2 服务器提供的访问令牌。 提供 "Token" 作为访问令牌,并可选地将 "ID Token" 用作 ID 令牌。 例如:

    "my-auth-id": { "Type": "Mock", "Token": "my-token" }
授权类型

获取访问令牌的方法。 可能的取值: "Authorization Code""Client Credentials""Device Authorization""Implicit""Password"

授权 URL

授权 URL,应用程序会将客户端请求重定向到该地址,以获取授权码。 授权码和隐式授权类型需要 "Auth URL"

令牌 URL

提供方的身份验证服务器,用于将授权码交换为访问令牌。 授权码、客户端凭据、设备授权和密码授权类型需要 "Token URL"

重定向 URL

客户端应用程序 回调 URL ,身份验证后请求应重定向到该地址。 这可以是客户端应用程序设置中的 URL;或者,如果授权服务器接受任意 URL,则可使用任意 URL,例如 http://localhost:12345/foo/bar

客户端 ID

向 API 提供商注册的客户端的公共标识符。 该参数对于所有 授权类型 都是必需的。

客户端密钥

客户端应用程序用于向授权服务器进行身份验证的机密标识符。 该参数对于客户端凭据 授权类型 是必需的。

客户端凭据

输入以下之一:

  • "none" :如果不希望在请求中指定客户端凭据。

  • "in body" :如果希望在请求正文中发送客户端凭据。

  • "basic" :在请求标头中发送 Basic 身份验证请求(默认值)。

设备授权 URL

客户端设备发出请求以获取设备代码和用户代码的 URL。

适用于并且是 Device Authorization 授权类型所必需的。

打开完整 URI

设置为 true 时,浏览器会打开包含用户代码的验证 URI(verification_uri_complete)。 默认值为 false :浏览器会打开验证 URI(不包含嵌入的用户代码),用户通常需要在该页面手动输入代码。

适用于 Device Authorization 授权类型。

在关闭浏览器后开始轮询

设置为 true 时,客户端设备仅在浏览器关闭后才应向令牌端点发送访问令牌请求(轮询)。 默认值为 false :设备会持续轮询令牌端点,直到用户完成交互或代码过期。

适用于 Device Authorization 授权类型。

PKCE

启用 代码交换证明密钥(PKCE)。 适用于授权码授权类型。

输入 "PKCE": true 以使用默认算法(对自动生成的 code verifier 执行 SHA-256 哈希)。 或者使用 "Code Challenge Method" (plain 或 SHA-256)和 "Code Verifier" 来自定义行为。 例如:

"PKCE": { "Code Challenge Method": "Plain", "Code Verifier": "YYLzIBzrXpVaH5KRx86itubKLXHNGnJBPAogEwkhveM" },
范围

用于限制应用对用户帐户的访问范围。 可能的取值取决于您尝试访问的服务。

自动获取

默认情况下,HTTP 客户端会在发送请求之前自动刷新或获取访问令牌。 如果您不希望在发送请求之前自动刷新或获取访问令牌,请输入 "Acquire Automatically": false。 您可以手动刷新或获取访问令牌。

用户名

作为授权的一部分发送的用户名,用于密码授权类型。

密码

作为授权的一部分发送的用户密码,用于密码授权类型。 为避免共享您的密码,您可以使用 私有变量 替代该值,例如, "Password": "{{password}}"

自定义请求参数

指定 自定义请求参数

自定义请求标头

指定 自定义请求标头

最后修改日期: 2025年 12月 2日