WebStorm 2025.2 Help

OAuth 2.0 授权

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

典型流程包括以下步骤:

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

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

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

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

创建认证配置

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

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

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

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

  4. 指定 身份验证参数。 所需参数取决于所选的 "Grant Type"。 填写身份验证参数时,可使用 WebStorm 的代码辅助功能:开始输入参数名称或按 Ctrl+Space 查看可用 JSON 键的列表。

在 HTTP 请求中使用认证配置

创建身份验证配置后,您可以使用它获取 access token 并验证您的请求。

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

  2. 点击 运行 发送请求。 访问受保护资源之前,HTTP Client 会向授权服务器发送请求以获取 access token。

  3. 按提示完成身份验证流程。 身份验证成功完成后,HTTP Client 将访问受保护资源。

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

HTTP Client 认证配置

运行此类请求时, 显示身份验证日志 按钮将在 服务 工具窗口中可用。 它允许您查看重定向页面、access token 和其他认证信息。

手动获取访问令牌

当您在 HTTP 请求中引用认证配置时,HTTP Client 会在访问受保护资源前自动获取(或刷新)access token。 如果您希望在不向受保护资源发送实际请求的情况下获取 access token,您可以手动获取该 access token。

  1. http-client.env.json 文件中,点击 运行 ,位于您的认证配置名称旁边。

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

  3. 出现提示时,请完成认证流程。

如果认证成功,WebStorm 将获取 access token。 如果您已有 access token,但其已过期,WebStorm 将刷新它。

获取新的访问令牌

除了刷新 token,您还可以通过重新认证,也就是重复获取初始 access token 时采用的流程,来获取新的 token。

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

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

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

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

当刷新或获取新 token 时,access token、refresh token 以及其他认证详情将显示在 HTTP 客户端身份验证日志 工具窗口中(视图 | 工具窗口 | HTTP 客户端身份验证日志)。

HTTP Client 认证日志工具窗口

清除浏览器 Cookie

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

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

  2. 选择 清除浏览器 Cookie

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

使用 ID 令牌替代访问令牌

如果您的服务器要求使用 ID token 而不是 access token,您可以通过以下任意方式配置 HTTP Client 使用此方法:

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

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

使用自定义认证参数

HTTP Client 提供了定义自定义请求参数的选项,以满足授权服务器的要求。 例如包括 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 Client 提供了使用自定义请求标头的选项,以满足授权服务器的要求。

  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" (用于开发或测试环境):模拟身份验证过程 — WebStorm 将使用来自身份验证配置的令牌,而不是由 OAuth2 服务器提供的访问令牌。 提供 "Token" 作为访问令牌,并可选地提供 "ID Token" 作为 ID 令牌。 例如:

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

获取 access token 的方法。 可能的取值: "Authorization Code""Client Credentials""Device Authorization""Implicit""Password"

授权 URL

应用将客户端请求重定向至此授权 URL 以获取授权码。 "Auth URL" 是 Authorization Code 和 Implicit 授权类型所必需的。

令牌 URL

提供方的身份验证服务器,用于将授权码交换为 access token。 "Token URL" 是 Authorization Code、Client Credentials、Device Authorization 和 Password 授权类型所必需的。

重定向 URL

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

Client ID

已在 API 提供方注册的客户端公开标识符。 此参数对于所有 grant types 都是必需的。

Client Secret

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

Client Credentials

请输入下列选项之一:

  • 如果您不希望在请求中指定客户端凭据,请选择 "none"

  • 如果您希望在请求正文中发送客户端凭据,请选择 "in body"

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

设备授权 URL

客户端设备请求以获取 device code 和 user code 的 URL。

适用于 Device Authorization 授权类型,且为必填项。

打开完整 URI

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

适用于 Device Authorization 授权类型。

浏览器启动后开始轮询

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

适用于 Device Authorization 授权类型。

PKCE

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

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

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

限制应用对用户账户访问权限的作用域。 可能的取值取决于您尝试访问的服务。

自动获取

默认情况下,HTTP Client 会在发送请求之前自动刷新或获取 access token。 如果您不希望在发送请求前自动刷新或获取 access token,请输入 "Acquire Automatically": false。 您可以手动刷新或获取。

用户名

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

密码

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

自定义请求参数

指定 自定义请求参数

自定义请求标头

指定 自定义请求头

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