OAuth 2.0 授权
HTTP 客户端支持 OAuth 2.0 授权。 您可以获取访问令牌,并对请求进行身份验证以访问受 OAuth 2.0 保护的资源。 为便于您输入用户凭据,HTTP 客户端会在内置的 JCEF 浏览器中显示登录表单。 该非模态浏览器不会阻止您在 IDE 中工作,例如,您可以复制并粘贴用户名和密码。
典型流程包括以下步骤:
指定身份验证设置 ,例如授权类型和令牌 URL,以 JSON 格式写入公共环境文件中。
引用此身份验证配置 ,在 HTTP 请求中使用
$auth.token变量。运行该请求。 如果身份验证成功,您即可访问受保护的资源。 您可以在 HTTP 客户端身份验证日志 或 服务 工具窗口中查看接收到的访问令牌和刷新令牌。
创建身份验证配置
在 .http 文件中,在 使用以下方式运行 列表中,选择要添加身份验证配置的环境。
在工具栏中,点击
并选择 身份验证配置。
这会在所选环境的
"Security"下的"Auth"对象中,向公共环境文件添加一个身份验证配置模板。 例如:{ "dev": { "Security": { "Auth": { "auth-id": { "Type": "OAuth2", "Grant Type": "", "Client ID": "" } } } } }将占位符
auth-id替换为有意义的名称,您将在 .http 文件中使用该名称引用此配置。指定 身份验证参数。 所需参数取决于所选
"Grant Type"。 在填写身份验证参数时,请使用 PyCharm 编码辅助:开始键入参数名称,或按 Ctrl+Space 以获取可用 JSON 键的列表。
在 HTTP 请求中使用身份验证配置
创建身份验证配置后,您可以使用它获取访问令牌,并对请求进行身份验证。
将身份验证配置的名称传递给
{{$auth.token()}}变量,例如,{{$auth.token("my-config")}}。 您可以在请求Authorization标头或查询参数中使用此变量。点击
以发送请求。 在访问受保护资源之前,HTTP 客户端会向授权服务器发送请求以获取访问令牌。
当出现提示时,完成身份验证过程。 如果身份验证成功完成,HTTP 客户端将访问受保护的资源。
要快速添加 {{$auth.token()}} 变量,您可以使用实时模板:在 HTTP 方法下的标头部分,开始键入 AuthorizationToken ,并从出现的建议列表中选择可用的身份验证。

运行此类请求时, 显示身份验证日志 按钮将在 服务 工具窗口中可用。 它可让您查看重定向页面、访问令牌以及其他身份验证详细信息。
手动获取访问令牌
当您在 HTTP 请求中引用身份验证配置时,HTTP 客户端会在访问受保护资源之前自动获取(或刷新)访问令牌。 如果您希望在不向受保护资源发送实际请求的情况下获取访问令牌,您可以手动获取访问令牌。
在 http-client.env.json 文件中,点击身份验证配置名称旁边的
。
如果身份验证配置包含 私有变量 ,请在出现的弹出窗口中选择一个私有环境文件。
当出现提示时,完成身份验证过程。
如果身份验证成功完成,PyCharm 将获取访问令牌。 如果您已经拥有访问令牌,但该令牌已过期,PyCharm 将刷新它。
获取新访问令牌
除了刷新令牌之外,您还可以通过重新进行身份验证来获取新令牌,即重复用于获取初始访问令牌的原始流程。
在 http-client.env.json 文件中,将插入符号置于身份验证配置名称上。
按 Alt+Enter (显示上下文操作 ),并选择 强制获取身份验证令牌。
如果身份验证配置包含 私有变量 ,请在出现的弹出窗口中选择一个私有环境文件。
当您的插入符号位于 .http 文件中的 $auth.token 变量上时,您可以调用相同的操作。 在这种情况下,您无需选择私有环境文件,因为 HTTP 客户端会使用与您的 .http 文件位于同一文件夹中的该文件。
当您刷新或获取新令牌时,访问令牌、刷新令牌以及其他身份验证详细信息会显示在 HTTP 客户端身份验证日志 工具窗口 () 中。

清除浏览器 Cookie
您的授权服务器可能会将身份验证数据存储在浏览器的 Cookie 中。 如果您想使用不同的数据测试身份验证流程,可能需要清除内置 JCEF 浏览器的 Cookie。
在 http-client.env.json 文件中,将插入符号置于身份验证配置名称上,并按 Alt+Enter (显示上下文操作)。
选择 清除浏览器 Cookie。
或者,您可以在 HTTP 客户端身份验证日志 工具窗口中点击 来清除 Cookie。
使用 ID 令牌替代访问令牌
如果您的服务器要求使用 ID 令牌而不是访问令牌,您可以通过以下任一方式配置 HTTP 客户端以实现此目的:
在您的身份验证配置中,使用
"Use ID Token": true参数。在 .http 文件中,使用
$auth.idToken变量,例如,Authorization: Bearer {{$auth.idToken("auth-id-1")}}。
使用自定义身份验证参数
HTTP 客户端提供定义自定义请求参数的选项,您的授权服务器可能需要这些参数。 例如,包括扩展 OAuth 2.0 授权框架的 resource 和 audience。
在您的身份验证配置中,添加
"Custom Request Parameters"对象。在
"Custom Request Parameters"内,输入参数名称和值(字符串或数组)。如果您想将参数的使用限制为某些请求,请将该值定义为包含两个键的对象:
"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 客户端提供使用自定义请求标头的选项,您的授权服务器可能需要这些标头。
在您的身份验证配置中,添加
"Custom Request Headers"对象。在
"Custom Request Headers"内,输入标头名称及其值。按 Ctrl+Space 可获取常用标头的建议列表,例如
Accept、Cookie或User-Agent。如果您想将标头的使用限制为某些请求,请将该值定义为包含两个键的对象:
"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}}"。- 自定义请求参数
指定 自定义请求参数
- 自定义请求标头
指定 自定义请求标头