PyCharm 2025.2 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. 在工具栏中点击 "添加"图标 并选择 身份验证配置

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

    { "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. 如果身份验证配置包含 private variables ,请选择弹出窗口中出现的一个私有环境文件。

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

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

获取新的访问令牌

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

  1. http-client.env.json 文件中,将文本光标放在身份验证配置名称上。

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

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

当您的文本光标位于 $auth.token 变量的 .http 文件中时,您可以调用相同的操作。 在这种情况下,您无需选择一个私有环境文件,因为 HTTP 客户端 将使用与您的 .http 文件位于同一文件夹中的那个文件。

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

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

清除浏览器 Cookie

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

  1. http-client.env.json 文件中,将文本光标放在认证配置名称上并按 Alt+Enter (显示上下文操作)。

  2. 请选择 清除浏览器 Cookie

或者,您可以通过点击 清除 CookieHTTP 客户端身份验证日志 工具窗口中清除 cookies。

使用 ID 令牌代替访问令牌

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

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

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

使用自定义身份验证参数

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

  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

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

客户端 ID

您向 API 提供者注册的客户端公共标识符。 所有 授权类型均需要此参数。

客户端密钥

由客户端应用程序用于向授权服务器进行身份验证的机密标识符。 此参数是 Client Credentials grant type 所必需的。

客户端凭据

输入以下其中之一:

  • "none" 如果您不想在请求中指定客户端凭证。

  • "in body" 如果您想在请求正文中发送客户端凭证。

  • "basic" 发送请求头中的 Basic 认证请求(默认值)。

设备认证URL

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

适用于设备授权许可类型并且是必需的。

打开完整 URI

当设置为 true 时,浏览器会打开一个验证 URI,其中包含用户代码(verification_uri_complete)。 默认值是 false :浏览器打开验证 URI(没有嵌入的用户代码),用户通常需要手动输入代码。

适用于设备授权授予类型。

在浏览器之后开始轮询

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

适用于设备授权授予类型。

PKCE

启用 Proof Key for Code Exchange (PKCE)。 适用于授权码许可类型。

输入 "PKCE": true 以使用默认算法(对自动生成的代码验证器进行 SHA-256 哈希处理)。 或者使用 "Code Challenge Method" (纯文本或 SHA-256)和 "Code Verifier" 自定义行为。 例如:

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

限制应用程序访问用户帐户的作用域。 可能的值取决于您尝试访问的服务。

自动获取

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

用户名

作为授权的一部分发送的用户名,与 Password 授权类型一起使用。

密码

作为授权的一部分发送的用户密码,与 Password 授权类型一起使用。 为了避免共享您的密码,您可以使用 private variable而不是值,例如 "Password": "{{password}}"

自定义请求参数

指定 自定义请求参数

自定义请求头

指定 自定义请求头

最后修改日期: 2025年 9月 26日