授权请求

API 使用授权来确保客户端请求安全地访问数据。这可能涉及对请求的发送者进行身份验证,并验证他们是否有权访问或操作相关数据。如果您正在构建 API,则可以从各种身份验证模型中进行选择。如果您要集成第三方 API,则所需的授权将由 API 提供商指定。

您可以将身份验证详细信息与您在 Postman 中发送的任何请求一起传递。身份验证数据可以包含在标头、正文中或作为请求的参数。如果您在“授权”选项卡中输入您的身份验证详细信息,Postman 将自动为您选择的身份验证类型填充请求的相关部分。您可以使用变量和集合来更安全、更有效地定义授权详细信息,从而使您能够在多个地方重用相同的信息。

内容

指定授权详细信息

在 Postman 中打开请求后,使用“授权”选项卡选择身份验证类型,然后完成所选类型的相关详细信息。正确的数据值将由您在服务器端的 API 确定。如果您使用的是第三方 API,请参阅提供商的文档以了解任何所需的身份验证详细信息。

授权选项卡

您可以在 Newman 和监视器以及 Postman 应用程序中使用这些身份验证类型。

当您从类型下拉列表中选择一种类型时,Postman 将指示您的详细信息将包含在请求的哪些部分中,例如标头、正文、URL 或查询参数。邮递员会在您选择或输入后立即将您的身份验证详细信息添加到请求的相关部分,以便您在尝试运行请求之前查看您的数据将如何发送。

您的身份验证数据将出现在请求的相关部分,例如在“标头”选项卡中。要显示自动添加的标题,请选择隐藏按钮。

隐藏的标题

将鼠标悬停在标题上以查看其添加位置。要更改身份验证标头,请导航回“授权”选项卡并更新您的配置。

您不能直接在“标题”选项卡中覆盖由您的授权选择添加的标题。如果您需要与 Postman 自动生成的不同的 auth 标头,请在Authorization中更改您的设置,或删除您的 auth 设置并手动添加标头。

您的请求身份验证可以使用环境、集合和全局变量。Postman 不会保存标头数据或查询参数,以避免暴露 API 密钥等敏感数据。

发送后,您可以在 Postman 控制台中检查整个请求的原始转储,包括身份验证数据。

继承授权

如果您将请求分组到集合和文件夹中,则可以指定身份验证详细信息以在整个组中重复使用。

默认情况下,集合或文件夹内的请求将从父级继承身份验证,这意味着它们将使用您在文件夹或集合级别指定的相同身份验证。要为单个请求更改此设置,请在请求授权选项卡中进行不同的选择。

授权类型

从“授权”选项卡上的“类型”下拉列表中选择一种类型。您可以选择请求、集合或文件夹的授权类型。

没有授权

除非您指定身份验证类型,否则邮递员不会随请求发送授权详细信息。如果您的请求不需要授权,请从Authorization选项卡Type下拉列表中选择No Auth 。

API 密钥

使用 API 密钥身份验证,您可以在请求标头或查询参数中向 API 发送一个键值对。在请求授权选项卡中,从类型列表中选择API 密钥。输入您的密钥名称和值,然后从“添加到”下拉列表中选择“标题”或“查询参数”。您可以将值存储在变量中以提高安全性。

API 密钥认证

Postman 会将相关信息附加到您的请求标头或 URL 查询字符串中。

不记名令牌

Bearer 令牌使请求能够使用访问密钥(例如 JSON Web 令牌 (JWT))进行身份验证。令牌是一个文本字符串,包含在请求标头中。在请求授权选项卡中,从类型下拉列表中选择承载令牌。令牌字段中,输入您的 API 密钥值。为了增加安全性,将其存储在一个变量中并按名称引用该变量。

Postman 会将令牌值附加Bearer到请求 Authorization 标头中所需格式的文本中,如下所示:

Bearer <Your API key>

如果需要自定义前缀,请使用带有Authorization密钥的API 密钥

基本认证

基本身份验证涉及在您的请求中发送经过验证的用户名和密码。在请求授权选项卡中,从类型下拉列表中选择基本身份验证。

在用户名密码字段中输入您的 API 登录详细信息。为了提高安全性,请将这些存储在变量中。

在请求Headers中,Authorization 标头向 API 传递一个表示您的用户名和密码值的 Base64 编码字符串,附加到文本Basic中,如下所示:

Basic <Base64 encoded username and password>

摘要授权

使用 Digest auth,客户端向 API 发送第一个请求,服务器会响应一些细节,包括只能使用一次的数字(随机数)、领域值和401未经授权的响应。然后,您发送回一个加密的数据数组,其中包括用户名和密码以及在第一个请求中从服务器接收到的数据。服务器使用传递的数据生成加密字符串,并将其与您发送的内容进行比较,以验证您的请求。

在请求的Authorization选项卡中,从Type下拉列表中选择Digest Auth 。Postman 将为身份验证请求的两个阶段提供字段。它将使用第一个请求从服务器返回的数据自动完成高级部分中第二个请求的字段。要使 Postman 自动执行流程,请输入用户名密码值(或变量),这些值将与第二个请求一起发送。

如果您不希望 Postman 自动提取数据,请在左侧列中选择是,禁用重试请求。如果您这样做,您将需要填写高级字段并手动运行每个请求。

设置高级部分中的字段是可选的;当您的第一个请求运行时,邮递员会自动填充它们。

  • 领域:服务器在WWW-Authenticate响应头中指定的字符串。
  • Nonce:服务器在WWW-Authenticate响应头中指定的唯一字符串。
  • 算法:一个字符串,表示用于生成摘要和校验和的一对算法。Postman 支持MD5SHA算法。
  • qop:应用于消息的保护质量。该值必须是服务器在WWW-Authenticate响应标头中指定的替代选项之一。
  • Nonce Count:客户端以本次请求中的 nonce 值发送的请求数(包括当前请求)的十六进制计数。
  • Client Nonce:客户端提供的不透明引用字符串值,客户端和服务器都使用它来避免选择明文攻击,提供相互身份验证,并提供一些消息完整性保护。
  • 不透明:服务器在WWW-Authenticate响应头中指定的一串数据,应该与同一保护空间中的 URI 原封不动地使用。

OAuth 1.0

OAuth 1.0 使客户端应用程序能够访问第三方 API 提供的数据。例如,作为服务的用户,您可以通过该服务授予另一个应用程序访问您的数据的权限,而不会暴露您的登录详细信息。使用 OAuth 1.0 访问用户数据涉及客户端应用程序、用户和服务提供者之间的一些请求。

OAuth 1.0 有时被称为“双腿”(仅在客户端和服务器之间进行身份验证)或“三腿”(客户端为第三方服务的用户请求数据)。一个示例 OAuth 1.0 流可以按如下方式运行:

  • 为了通过第三方服务请求用户数据,消费者(客户端应用程序)使用密钥和秘密等凭证请求访问令牌。
  • 服务提供者发出一个初始令牌(不提供对用户数据的访问),消费者向用户请求授权。
  • 当用户授予身份验证时,消费者请求将临时令牌交换为访问令牌,通过用户身份验证。
  • 服务提供者返回访问令牌,然后消费者可以向服务提供者发出请求以访问用户的数据。

Postman 支持OAuth Core 1.0 Revision A

要使用 OAuth 1.0:

  1. 在请求的授权选项卡中,从类型下拉列表中选择OAuth 1.0 。

  2. 从下拉列表中选择签名方法。这将确定您应该在请求中包含哪些参数。Postman 支持HMAC-SHA1, HMAC-SHA256, HMAC-SHA512, RSA-SHA1, RSA-SHA256, RSA-SHA512, 和PLAINTEXT.

    • 如果您的服务器需要HMACPLAINTEXT签名,Postman 将提供Consumer KeyConsumer SecretAccess TokenToken Secret字段。
    • 如果您使用RSA签名,Postman 将提供Consumer KeyAccess TokenPrivate Key输入。
  3. 您可以选择设置高级详细信息 - 否则 Postman 将尝试自动完成这些。

  4. 您可以在请求标头或正文/ URL 中包含身份验证详细信息。从将授权添加到下拉列表中选择一项。如果您想检查详细信息将如何包含在请求中,请打开“标头”或“正文”选项卡。

如果您在标头中发送 OAuth 1.0 数据,则会将发送您的密钥和秘密值的授权标头OAuth与其他以逗号分隔的必需详细信息一起附加到字符串中。

完成授权设置中的所有必填字段后, Postman 会将 OAuth 1.0 信息附加到请求标头中。

如果您在正文和 URL 中发送 OAuth 1.0 数据,则数据将添加到请求正文参数,具体取决于请求方法。

如果请求方法是POSTor PUT,并且请求体类型是x-www-form-urlencoded, Postman 会将授权参数添加到请求体中。否则,例如在GET请求中,您的密钥和秘密数据将在 URL 查询参数中传递。

OAuth 1.0 auth 参数值如下:

  • 签名方法:您的 API 用于验证请求的方法。
  • 消费者键:用于标识服务提供者的消费者的值。
  • 消费者秘密:消费者用来建立密钥所有权的值。(用于HMACPLAINTEXT签名方法。)
  • Access Token:一个值,代表消费者对用户数据的访问权限。
  • 令牌秘密:消费者用来建立给定令牌所有权的值。(用于HMACPLAINTEXT签名方法。)
  • 私钥:生成授权签名的私钥。(用于RSA签名方法。)
  • 高级参数:
    • 回调 URL: URL 服务提供者将重定向到以下用户授权。(如果您的服务器使用 OAuth 1.0 修订版 A,则为必需。)
    • 验证者:用户认证后来自服务提供商的验证码。
    • 时间戳:服务器用来防止超出时间窗口的重放攻击的时间戳。
    • Nonce:客户端生成的随机字符串。
    • 版本: OAuth 身份验证协议 (1.0) 的版本。
    • 领域:服务器在WWW-Authenticate响应头中指定的字符串。
    • 包括正文散列:用于与 .以外 的请求正文进行完整性检查的散列application/x-www-form-urlencoded。(当您使用回调 URL/验证器时禁用。)

如果您的 OAuth 1.0 的服务器实现需要它,请选择Add empty parameters to signature

您还可以选择框以对请求的授权标头中的参数进行编码。

OAuth 2.0

使用 OAuth 2.0,您首先检索 API 的访问令牌,然后使用该令牌对未来的请求进行身份验证。使用 OAuth 2.0 访问数据在 API 服务提供商之间差异很大,但通常涉及客户端应用程序、用户和 API 之间的一些请求。

示例 OAuth 2.0 流程可以按如下方式运行:

  • 客户端应用程序请求用户授权访问他们的数据。
  • 如果用户授予访问权限,则应用程序会向服务提供商请求访问令牌,传递来自用户的访问权限和身份验证详细信息以识别客户端。
  • 服务提供商验证这些详细信息并返回访问令牌。
  • 客户端使用访问令牌向服务提供者请求用户数据。

要使用 OAuth 2.0:

  1. 在请求的授权选项卡中,从类型下拉列表中选择OAuth 2.0 。指定是否要在请求 URL 或标头中传递身份验证详细信息。

    默认情况下,Postman 会将访问令牌附加到Bearer您的请求的 Authorization 标头中,但如果您的服务器实现需要不同的前缀,您可以在Header Prefix字段中指定它。

  2. 要请求访问令牌,请填写配置新令牌部分中的字段,然后选择获取新访问令牌。您可以保存令牌和详细信息以生成带有您的请求或集合的令牌。

    一旦生成并添加了令牌值,它将出现在请求Headers中。

  3. 输入您的客户端应用程序的详细信息,以及来自服务提供商的任何身份验证详细信息。这允许您在 Postman 中复制您的应用程序身份验证流程,以测试经过身份验证的请求。

    您可以通过选择可用令牌旁边的同步按钮与您的团队共享令牌凭据。默认情况下,Postman 不会同步您的令牌,以防您不想共享它。

  4. Postman 将根据 OAuth 2.0授权类型提示您提供特定详细信息,可以是Authorization codeImplicitPassword credentialsClient credentials

授权码

授权代码授予类型要求用户向提供者进行身份验证——然后将授权代码发送回客户端应用程序,提取并与提供者交换访问令牌以验证后续请求。

要使用授权码授权类型,请输入客户端应用程序的回调 URL(应向 API 提供者注册),以及 API 服务提供的各种详细信息,包括Auth URLAccess Token URLClient IDClient Secret

如果您愿意,可以通过选择Authorize using browser在 Web 浏览器而不是 Postman 中输入您的身份验证详细信息。

授权码(带 PKCE)

您可以将 PKCE(代码交换证明密钥)与 OAuth 2.0 一起使用。当您选择Authorization Code (With PKCE)时,两个附加字段将可用于Code Challenge MethodCode Verifier。您可以选择使用SHA-256Plain算法来生成代码质询。验证者是一个可选的 43-128 字符串,用于连接授权请求和令牌请求。

推荐使用授权码(With PKCE)授权类型加上使用浏览器授权,以防止授权码拦截攻击。

隐式

隐式授权类型向客户端返回访问令牌,而不需要额外的身份验证代码步骤(因此安全性较低)。

要在 Postman 中对您的请求使用隐式授权类型,请输入您已向 API 提供者注册的回调 URL 、提供者Auth URL以及您已注册的应用程序的客户端 ID 。

如果您愿意,可以通过选择Authorize using browser在 Web 浏览器而不是 Postman 中输入您的身份验证详细信息。

密码凭据

OAuth 2.0 密码授权类型涉及直接从客户端发送用户名和密码,因此如果您正在处理第三方数据,则不建议这样做。

要使用密码授权类型,请输入您的 API 提供商的访问令牌 URL,以及用户名密码。在某些情况下,您还需要提供客户端 ID 和密码。

客户端凭据

客户端凭据授予类型通常不用于访问用户数据,而是用于与客户端应用程序关联的数据。

输入提供商的访问令牌 URL以及您注册的应用程序的客户端 ID客户端密码

请求 OAuth 2.0 令牌

请求新访问令牌的完整参数列表如下,具体取决于您的授权类型。

配置选项选项卡上:

  • 令牌名称:要用于令牌的名称。
  • 授权类型:选项的下拉列表。这将取决于 API 服务提供商的要求。
  • 回调 URL:认证后重定向到的客户端应用回调 URL,应该向 API 提供者注册。如果未提供,Postman 将使用默认的空 URL 并尝试从中提取代码或访问令牌。如果这不适用于您的 API,您可以使用以下 URL:https://oauth.pstmn.io/v1/browser-callback
    • 使用浏览器授权:您可以在 Web 浏览器中输入您的凭据,而不是使用授权代码隐式授权类型时默认出现在 Postman 中的弹出窗口。选中此框会将回调 URL设置为返回给 Postman。如果您选择使用浏览器进行授权,请确保为回调 URL 禁用弹出窗口,否则将无法正常工作。
  • 身份验证 URL: API 提供者授权服务器的端点,用于检索身份验证代码。
  • 访问令牌 URL:提供者的身份验证服务器,用于交换访问令牌的授权代码。
  • 客户端 ID:向 API 提供者注册的客户端应用程序的 ID。
  • 客户端密码: API 提供者提供给您的客户端密码。
  • 范围:您请求的访问范围,可能包括多个空格分隔的值。
  • State:防止跨站请求伪造的不透明值。
  • 客户端身份验证:下拉列表:在标头中发送基本身份验证请求,或在请求正文中发送客户端凭据。升级到新版本后,更改此下拉菜单中的值以避免客户端身份验证出现问题。

高级选项选项卡上:

  • 资源:指示要使用令牌的资源或目标服务的 URI。
  • 受众:指示要使用令牌的目标受众或服务的 URI。

配置完成后,选择Get New Access Token

当您使用授权代码隐式授权类型时,系统将提示您提供凭据以检索访问令牌以在后续请求中使用。默认情况下,当您选择Request Token时,Postman 将显示一个弹出式浏览器。您也可以选择使用系统的默认 Web 浏览器进行身份验证。选择使用浏览器授权,当您在浏览器中完成身份验证后,回调 URL将自动填充返回给 Postman,以便您的请求可以使用身份验证成功时返回的令牌。

当您从 API 收到令牌时,您将看到其详细信息以及到期时间,以及可选的刷新令牌,您可以在当前令牌到期时使用它来检索新的访问令牌。选择Use Token选择返回值。

任何成功检索到的令牌都将列在请求可用令牌下拉列表中。选择一个与您的请求一起发送。在下拉列表中选择管理令牌以查看更多详细信息或删除您的令牌。

如果身份验证失败或超时,Postman 将显示错误消息。您可以在控制台中检查错误详细信息、重试以再次尝试身份验证,或在继续之前编辑您的身份验证详细信息。

在 Postman 中删除令牌不会撤销访问权限。只有颁发令牌的服务器才能撤销它。

鹰认证

Hawk 身份验证使您能够使用部分加密验证来授权请求​​。

  1. 在请求的授权选项卡中,从类型下拉列表中选择Hawk 身份验证。

  2. 在Hawk Auth IDHawk Auth KeyAlgorithm字段中输入您的详细信息。您可以选择设置高级详细信息,但 Postman 会在必要时尝试为它们生成值。

在您的请求的Authorization选项卡中完成所需的详细信息后,Postman 会将它们添加到Headers中。

Hawk 认证参数如下:

  • Hawk 身份验证 ID:您的 API 身份验证 ID 值。
  • Hawk 身份验证密钥:您的 API 身份验证密钥值。
  • 算法:用于创建消息验证码 (MAC) 的哈希算法。
  • 高级参数:
    • 用户:用户名。
    • Nonce:客户端生成的随机字符串。
    • ext:与请求一起发送的任何特定于应用程序的信息。
    • app:凭据和应用程序之间的绑定,以防止攻击者使用颁发给其他人的凭据。
    • dlg:证书颁发到的应用程序的 ID。
    • 时间戳:服务器用来防止超出时间窗口的重放攻击的时间戳。

AWS 签名

AWS 是 Amazon Web Services 请求的授权工作流程。AWS 使用基于密钥 HMAC(哈希消息身份验证代码)的自定义 HTTP 方案进行身份验证。

官方 AWS 签名文档提供了更多详细信息:

  1. 在请求的授权选项卡中,从类型下拉列表中选择AWS 签名。

  2. 使用将授权数据添加到下拉列表选择 Postman 应在何处附加您的 AWS 身份验证详细信息— 选择请求标头或 URL。

    • 如果您选择Request Headers,Postman 将在Headers选项卡中添加AuthorizationX-Amz-前缀字段。
    • 如果您选择Request URL,Postman 将在Params中添加身份验证详细信息,并带有前缀键X-Amz-
  3. 直接在字段中或通过变量输入您的访问密钥和秘密值以提高安全性。

  4. 您可以选择设置高级字段,但 Postman 会在必要时自动生成这些字段。

AWS 签名参数如下:

  • AWS 区域:接收请求的区域(默认为us-east-1)。
  • 服务名称:接收请求的服务。
  • 会话令牌:仅在使用临时安全凭证时需要。

NTLM 身份验证

Windows Challenge/Response (NTLM) 是 Windows 操作系统和独立系统的授权流程。

  1. 在请求的授权选项卡中,从类型下拉列表中选择NTLM 身份验证。

  2. 输入 NTLM 访问的用户名密码(使用变量避免直接输入值)。您可以选择指定高级参数,但 Postman 会在必要时尝试自动完成这些参数。默认情况下,您的请求将在提取从第一次收到的数据后第二次运行。您可以通过选中复选框来关闭此行为。

NTLM 身份验证的高级参数如下:

  • 域:要进行身份验证的域或主机。
  • 工作站: PC 的主机名。

Akamai EdgeGrid

Akamai Edgegrid 是 Akamai 开发和使用的授权助手。

  1. 在请求的授权选项卡中,从类型下拉列表中选择Akamai EdgeGrid 。

  2. 输入您的Access TokenClient TokenClient Secret,使用变量以提高安全性 — 当您向 Akamai 注册客户端应用程序时,您将收到这些详细信息。

在您的请求的Authorization选项卡中完成所需的详细信息后,Postman 会将它们添加到Headers中。

有关获取您的凭证的信息,请参阅Akamai 开发人员 - 授权您的客户端

同步 cookie

如果您的浏览器中有会话 cookie,您可以使用拦截器将它们同步到 Postman。有关更多详细信息,请参阅拦截器扩展Cookie

下一步

如果您在获取验证和成功运行的请求时遇到问题,请尝试对 API 请求进行故障排除中的一些技巧。如果您仍然有身份验证问题,请查看Postman 论坛上的身份验证标签。