postman——基础操作——API授权
当发送请求时,通常会包括参数,用以确保请求能够访问和范湖所需的数据,postman提供了授权类型,能在postman中处理身份验证问题;
参考网址:https://learning.getpostman.com/docs/postman/sending-api-requests/authorization/
(1)、基本认证(basic auth);
(2)、摘要身份验证(digest auth);
(3)、oauth;
================================================================================================================
授权请求
API使用授权来确保客户端请求安全地访问数据。这可能涉及对请求的发送者进行身份验证,并验证他们是否有权访问或操作相关数据。如果要构建API,则可以从多种身份验证模型中进行选择。如果您要集成第三方API,则所需的授权将由API提供程序指定。
您可以传递身份验证详细信息以及在Postman中发送的任何请求。Auth数据可以包含在标题,正文中,也可以作为请求的参数。如果在“ 授权”选项卡中输入身份验证详细信息,邮递员将自动为您选择的身份验证类型填充请求的相关部分。您可以使用变量和集合来更安全,更有效地定义授权详细信息,从而使您可以在多个位置重复使用相同的信息。
内容
指定授权详细信息
在邮递员中打开请求后,使用“ 授权”选项卡“ 类型”下拉列表选择一种身份验证类型。邮递员将提示您完成所选类型的相关详细信息。正确的数据值将由服务器端的API决定-如果您使用的是第三方API,则需要向提供商咨询以获取任何所需的身份验证详细信息。
您可以在Newman和Postman监视器以及应用程序中使用这些身份验证类型。
当您选择一种类型时,邮递员会指出您的详细信息将包含在请求的哪些部分中,例如标题,正文,URL或查询参数。单击预览请求以查看如何将您的身份验证数据添加到请求中,然后再尝试发送。
您的身份验证数据将出现在请求的相关部分,例如,使用您的API可以处理的标准格式,将其附加到标头中的文本。
您的请求可以使用环境,集合和全局变量。邮递员不会保存标头数据或查询参数,以避免暴露敏感数据(例如API密钥)。
发送后,您可以在Postman控制台中检查整个请求的原始转储,包括身份验证数据。
继承认证
如果将请求分类在集合和文件夹中,则可以指定身份验证详细信息以在整个组中重复使用。
选择一个集合或文件夹集合邮递员应用程序的左侧。使用溢出按钮(...)打开选项,然后选择“ 编辑”以配置集合或文件夹详细信息。
在编辑视图中,选择“ 授权”选项卡。
默认情况下,集合或文件夹中的请求将继承父项的身份验证,这意味着它们将使用您在文件夹或集合级别指定的身份验证。要针对单个请求更改此设置,请在请求的“ 授权”选项卡中进行其他选择。
首次创建集合或文件夹时,可以使用相同的技术预先选择授权类型。
没有授权
邮递员将不会尝试通过请求发送授权详细信息,除非您指定身份验证类型。如果您的请求不需要授权,请从“ 授权”选项卡的“ 类型”下拉列表中选择“ 无身份验证 ” 。
不记名令牌
承载令牌允许使用访问密钥(例如JSON Web令牌(JWT))对请求进行身份验证。令牌是文本字符串,包含在请求标头中。在请求授权选项卡中,从类型下拉列表中选择承载令牌。在“ 令牌”字段中,输入您的API密钥值-或为了增加安全性,将其存储在变量中并按名称引用该变量。
邮递员将令牌值以要求的格式附加到文本“ Bearer”上,如下所示:
Bearer <Your API key>
基本认证
基本身份验证涉及随请求一起发送经过验证的用户名和密码。在请求授权选项卡中,从类型下拉列表中选择基本身份验证。
在“ 用户名”和“ 密码”字段中输入您的API登录详细信息-为了提高安全性,您可以将其存储在变量中。
单击预览请求以查看邮递员如何将基本身份验证详细信息附加到请求。在请求标头中,您将看到正在向Authorization标头传递一个表示您的用户名和密码值的Base64编码的字符串,该字符串附加到文本“ Basic”中,如下所示:
Basic <Base64 encoded username and password>
摘要授权
使用Digest auth,客户端将向API发送第一个请求,服务器将以一些详细信息进行响应,包括只能使用一次(一次)的数字,领域值和401
未经授权的响应。然后,在第一个请求中,将包含用户名和密码的加密数据数组与从服务器接收到的数据相结合,发送回去。服务器使用传递的数据来生成加密的字符串,并将其与您发送的字符串进行比较,以认证您的请求。
在请求的“ 授权”选项卡中,从“ 类型”下拉列表中选择“摘要身份验证 ” 。邮递员将显示身份验证请求两个阶段的字段,但是它将使用第一个请求从服务器返回的数据自动完成第二个请求的字段。要允许Postman自动执行流程,请输入用户名和密码值(或变量),这些值将与第二个请求一起发送。
如果您不希望Postman自动提取数据,请选中此框以禁用重试请求。如果这样做,则需要填写高级字段并手动运行每个请求。
高级字段是可选的,邮递员将在您的请求运行时尝试自动填充它们。
- 领域:服务器在
WWW-Authenticate
响应标头中指定的字符串。 - Nonce:服务器在
WWW-Authenticate
响应标头中指定的唯一字符串。 - Algorithm:一个字符串,指示用于生成摘要和校验和的一对算法。
- qop:应用于消息的保护质量。该值必须是服务器在
WWW-Authenticate
响应标头中指定的替代值之一。 - Nonce Count(立即数):客户端已发送的请求数量(包括当前请求)的十六进制计数,该请求中的随机数值为。
- 客户端现时:客户端提供的不透明的带引号的字符串值,客户端和服务器均使用该值来避免选择的明文攻击,提供相互身份验证并提供某些消息完整性保护。
- 不透明:服务器在
WWW-Authenticate
响应头中指定的数据字符串,应与相同保护空间中的URI一起使用。
OAuth 1.0
OAuth 1.0允许客户端应用程序访问第三方API提供的数据。例如,作为服务的用户,您可以授予另一个应用程序对该服务的数据访问权限,而无需暴露您的登录详细信息。通过OAuth 1.0流访问用户数据需要在客户端应用程序,用户和服务提供商之间来回几个请求。
OAuth 1.0有时被称为“两足”(仅在客户端和服务器之间进行身份验证)或“三足”(客户端在其中向第三方服务的用户请求数据)。
- 为了使用第三方服务请求用户数据,使用者(客户端应用程序)使用密钥和机密请求访问令牌。
- 服务提供者发出初始令牌(不提供对用户数据的访问),而使用者则向用户请求授权。
- 当用户授予身份验证时,消费者发出请求,将临时令牌交换为访问令牌,并通过用户身份验证。
- 服务提供商返回访问令牌,然后消费者可以向服务提供商提出请求以访问用户的数据。
在请求的“ 授权”标签中,从“ 类型”下拉列表中选择OAuth 1.0。
输入您的使用者密钥,使用者密钥,访问令牌和令牌密钥值。您可以选择设置高级细节,否则Postman会尝试自动完成这些细节。
您可以在请求标头或正文/ URL中包括身份验证详细信息-从下拉列表中选择一个。如果要检查详细信息将如何包含在请求中,请单击“ 预览请求”。
如果您在标头中发送OAuth 1.0数据,则会看到一个Authorization标头,该标头将您的密钥和机密值以及附加的逗号分隔的必需详细信息附加到字符串“ OAuth”中。
如果你在身体和URL发送的OAuth 1.0的数据,你会发现在请求或者将数据添加到身体或参数取决于请求方法。
如果request方法为POST
或PUT
,并且请求正文类型为x-www-form-urlencoded
,则Postman会将授权参数添加到请求正文中。否则,例如在GET
请求中,您的密钥和机密数据将在URL查询参数中传递。
OAuth 1.0 auth参数值如下:
- 消费者密钥:用于识别服务提供商的消费者的值。
- 消费者秘密:消费者用来建立密钥所有权的一种值。
- 访问令牌:代表消费者访问用户数据的权限的值。
- 令牌秘密:消费者用于建立给定令牌所有权的值。
-
进阶参数:
- 签名方法:建立给定令牌所有权的消费者机密。
- 时间戳:服务器用来防止在时间窗口之外进行重放攻击的时间戳。
- Nonce:客户端生成的随机字符串。
- 版本: OAuth身份验证协议的版本(1.0)。
- 领域:服务器在
WWW-Authenticate
响应标头中指定的字符串。
OAuth 1.0的某些实现要求将空参数添加到签名中。如果需要,请选中将空参数添加到签名复选框。
OAuth 2.0
OAuth 1.0允许客户端应用程序访问第三方API提供的数据。例如,作为服务的用户,您可以授予另一个应用程序对该服务的数据访问权限,而无需暴露您的登录详细信息。使用OAuth 2.0,您首先要检索API的访问令牌,然后使用该令牌来认证将来的请求。在API服务提供商之间,通过OAuth 2.0流访问数据的方式有很大不同,但是通常涉及一些在客户端应用程序,用户和API之间来回的请求。
OAuth 2.0流程示例可以如下运行:
- 客户端应用程序请求用户授权对其数据的访问。
- 如果用户授予访问权限,则应用程序然后向服务提供商请求访问令牌,并传递用户的访问权限和身份验证详细信息以标识客户端。
- 服务提供商将验证这些详细信息并返回访问令牌。
- 客户端使用访问令牌通过服务提供商请求用户数据。
在请求的“ 授权”标签中,从“ 类型”下拉列表中选择OAuth 2.0。指定是否要在请求URL或标题中传递身份验证详细信息。
要请求访问令牌,请点击获取新的访问令牌。
输入您的客户端应用程序的详细信息,以及服务提供商提供的所有身份验证详细信息。这使您可以在Postman内部复制应用程序身份验证流,以测试经过身份验证的请求。
邮递员将提示您根据OAuth 2.0 授予类型提供特定的详细信息,这些类型可以是授权代码,隐式,密码凭证或客户端凭证。
授权码
授权码授予类型要求用户向提供者进行验证-授权码然后发送回客户端应用程序,提取并与提供者交换以获得访问令牌以验证后续请求。
要使用授权码授予类型,请输入客户端应用程序的回调URL(应在API提供商处注册),以及API服务提供的各种详细信息,包括Auth URL,访问令牌URL,Client ID和Client Secret。
隐含的
隐式授予类型立即将访问令牌返回到客户端,而无需执行额外的身份验证代码步骤(因此安全性较低)。
要将隐式授予类型用于Postman中的请求,请输入您已向API提供程序注册的回调URL,提供程序Auth URL以及已注册应用程序的客户端ID。
密码凭证
OAuth 2.0密码授予类型涉及直接从客户端发送用户名和密码,因此,如果您要处理第三方数据,则不建议使用。
要使用密码授予类型,请输入API提供者的访问令牌URL,以及用户名和密码。在某些情况下,您还需要提供客户端ID和密码。
客户凭证
客户端凭据授予类型通常不用于访问用户数据,而是用于与客户端应用程序关联的数据。
输入提供者的访问令牌URL以及您注册的应用程序的客户端ID和客户端密钥。
请求OAuth 2.0令牌
请求新访问令牌的参数的完整列表如下,具体取决于您的授予类型:
- 令牌名称:您要用于令牌的名称。
- 授予类型:选项的下拉列表-这将取决于API服务提供商的要求。
- 回调URL:身份验证后重定向到的客户端应用程序回调URL,应在API提供程序中注册。如果未提供,Postman将使用默认的空URL并尝试从中提取代码或访问令牌-如果此方法不适用于您的API,则可以使用以下URL:
https://www.getpostman.com/oauth2/callback
- 身份验证URL: API提供程序授权服务器的端点,用于检索身份验证代码。
- 访问令牌URL:提供商的身份验证服务器,用于交换访问令牌的授权代码。
- 客户端ID:您在API提供商处注册的客户端应用程序的ID。
- 客户端机密: API提供商提供给您的客户端机密。
- 范围:您所请求的访问范围,其中可能包含多个以空格分隔的值。
- 状态:不透明的值,以防止跨站点请求伪造。
- 客户端身份验证:一个下拉列表-在标头中发送基本身份验证请求,或在请求正文中发送客户端凭据。升级到新版本后,请更改此下拉菜单中的值,以避免客户端身份验证出现问题。
配置完成后,点击请求令牌。如果您成功从API接收到令牌,则将看到其详细信息,到期时间以及可选的刷新令牌,当当前令牌过期时,您可以使用该令牌来检索新的访问令牌。单击“ 使用令牌”以选择返回的值。
任何成功检索的令牌都将在请求“ 可用令牌”下拉列表中列出。选择一个发送您的请求。在下拉列表中选择管理令牌以查看更多详细信息或删除您的令牌。
在Postman中删除令牌不会撤消访问权限。只有发出令牌的服务器才能撤销它。
鹰认证
Hawk身份验证使您可以使用部分密码验证来授权请求。
在请求的“ 授权”选项卡中,从“ 类型”下拉列表中选择“ Hawk身份验证 ” 。
在Hawk Auth ID,Hawk Auth Key和Algorithm字段中输入您的详细信息。您可以选择设置高级详细信息,但必要时Postman会尝试为其生成值。
Hawk身份验证参数如下:
- Hawk身份验证ID:您的API身份验证ID值。
- Hawk身份验证密钥:您的API身份验证密钥值。
- 算法:用于创建消息认证码(MAC)的哈希算法。
-
进阶参数:
- 用户:用户名。
- Nonce:客户端生成的随机字符串。
- ext:与请求一起发送的任何特定于应用程序的信息。
- app:凭据与应用程序之间的绑定,以防止攻击者使用发布给他人的凭据。
- dlg:颁发证书的应用程序的ID。
- 时间戳:服务器用来防止在时间窗口之外进行重放攻击的时间戳。
AWS签名
AWS是Amazon Web Services请求的授权工作流程。AWS使用基于键控HMAC(哈希消息身份验证代码)的自定义HTTP方案进行身份验证。
官方的AWS Signature文档提供了更多详细信息:
在请求的“ 授权”选项卡中,从“ 类型”下拉列表中选择“ AWS签名 ” 。
直接在字段中或通过变量输入访问密钥和秘密值,以提高安全性。
您可以选择设置高级字段,但必要时Postman会尝试自动生成这些字段。
AWS Signature参数如下:
- AWS区域:接收请求的区域(默认为
us-east-1
)。 - 服务名称:接收请求的服务。
- 会话令牌:仅在使用临时安全凭证时才需要。
NTLM身份验证
Windows质询/响应(NTLM)是Windows操作系统和独立系统的授权流程。
在请求的“ 授权”选项卡中,从“ 类型”下拉列表中选择“ NTLM身份验证 ” 。
输入用于NTLM访问的用户名和密码(使用变量以避免直接输入值)。您可以选择指定高级参数,但必要时Postman会尝试自动完成这些参数。默认情况下,您的请求将在提取第一次收到的数据后第二次运行-您可以通过选中此复选框来禁用它。
NTLM身份验证的高级参数如下:
- 域:要对其进行身份验证的域或主机。
- 工作站: PC的主机名。
Akamai EdgeGrid
Akamai Edgegrid是Akamai开发和使用的授权帮助程序。
在请求的“ 授权”选项卡中,从“ 类型”下拉列表中选择Akamai EdgeGrid。
使用变量来输入Access Token,Client Token和Client Secret,以提高安全性-在Akamai注册客户端应用程序时,您将收到这些详细信息。
有关获取凭据的信息,请参阅Akamai开发人员-授权您的客户端。
同步cookie
如果浏览器中有会话cookie,则可以使用Interceptor将它们同步到Postman(请参阅Interceptor扩展和Cookies)以获取更多详细信息。
下一步
如果您在获取请求进行身份验证和成功运行时遇到问题,请尝试对API请求进行故障排除中的一些技巧。如果仍然存在身份验证问题,请在Postman论坛上签出身份验证标签。