首先先明确一下接口鉴权的含义:简单来说鉴权就是要确定用户是否有访问系统(这里可以理解成接口)的权限
一般情况下如果发送接口请求的时候返回了 401 错误, 那么一般是接口需要鉴权
鉴权的方式有多种,下面一一列举
使用方法
点击下图 Collections 右侧的...,然后选择 edit,在 EDIT COLLECTION 中选择 Authorization
type 中可以根据实际需要选择下方鉴权方法,比如选择 Basic Auth,用户名密码都用 111
此时 test1 下面的所有请求包括 test02 文件夹下的请求都会按照上面设置的鉴权方式鉴权(因为鉴权方式是默认按照从父级继承的)
即 request1 和 request2、request3 都是使用的 test01 设置的鉴权方式 Basic Auth,用户名密码都用 111
然后如果想让 test02 用另外的鉴权方式怎么办呢 ?
简单 ,还按照上面的方法,点击 test02 右侧的...,然后选择 edit,在 EDIT COLLECTION 中选择 Authorization,type 选择 Basic Auth,用户名密码都用 222
此时 request1 和 request2 都是使用的 test01 设置的鉴权方式 Basic Auth,用户名密码都用 111
request3 使用的是 test02test01 设置的鉴权方式 Basic Auth,用户名密码都用 222
这个很好理解,就不用说了,选择它就说明接口不需要鉴权
定义:为了验证使用者的身份,需要客户端向服务器端提供一个可靠的验证信息,称为 Token,这个 token 通常由 Json 数据格式组成,通过 hash 散列算法生成一个字符串,所以称为 Json Web Token(Json 表示令牌的原始值是一个 Json 格式的数据,web 表示是在互联网传播的,token 表示令牌,简称 JWT)
使用方法如下
postman 中发送请求,通过抓包可以看到请求中已经把 token 带上了
注意本文没有写如何获取 token,各位根据实际情况自行获取即可,另外 postman 设置 BearToken 的时候有如下一段提示:
Heads up! These parameters hold sensitive data. To keep this data secure while working in a collaborative environment, we recommend using variables. Learn more about variables
大致意思就是为了数据安全建议使用变量,所以建议使用的时候先把 token 的值赋给变量 varxxx(名字随意),然后
这样使用即可
Basic Auth 是一种用来允许网页浏览器或其他客户端程序在请求时提供用户名和口令形式的身份凭证的一种登录验证方式,这个很好理解使用起来也简单,如下
Digest auth 是一个简单的认证机制,最初是为 HTTP 协议开发的,因此也常叫做 HTTP 摘要。其身份验证机制非常简单,
它采用哈希加密方法,以避免用明文传输用户的口令。摘要认证就是要核实參与通信的两方都知道双方共享的一个口令。(在 “Digest Auth” 流程中, 客户端向服务器发送请求,服务器返回客户端的 nonce 和 realm 值;客户端对用户名、密码、nonce 值、HTTP 请求方法、被请求资源 URI 等组合后进行 MD5 运算,把计算得到的摘要信息发送给服务端。服务器然后发回客户端请求的数据。通过哈希算法对通信双方身份的认证十分常见,它的好处就是不必把具备密码的信息对外传输,只需将这些密码信息加入一个对方给定的随机值计算哈希值,最后将哈希值传给对方,对方就可以认证你的身份。Digest 思想同样采如此,用了一种 nonce 随机数字符串,双方约好对哪些信息进行哈希运算即可完成双方身份的验证。Digest 模式避免了密码在网络上明文传输,提高了安全性,但它仍然存在缺点,例如认证报文被攻击者拦截到攻击者可以获取到资源。)
各参数的含义如下
realm:表示 Web 服务器中受保护文档的安全域(比如公司财务信息域和公司员工信息域)
,用来指示需要哪个域的用户名和密码
Nonce:服务端向客户端发送质询时附带的一个随机数,这个数会经常发生变化。客户端计算密码摘要
时将其附加上去,使得多次生成同一用户的密码摘要各不相同,用来防止重放攻击
Algorithm:算法,MD5 或者 MD5-sess
qop:保护质量,包含 auth(默认的)和 auth-int(增加了报文完整性检测)两种策略,(可以为空,但是)不推荐为空值
Nonce Count:nonce 计数器,是一个 16 进制的数值,表示同一 nonce 下客户端发送出请求的数量。例如,在响应的第一个请求中,客户端将发送 “nc=00000001”。这个指示值的目的是让服务器保持这个计数器的一个副本,以便检测 重复的请求
Client Nonce:客户端随机数,这是一个不透明的字符串值,由客户端提供,并且客户端和服务器都会使用,以避免用明文文本。这使得双方都可以查验对方的身份,并对消息的完整性提供一些保护
Opaque: 这是个 WWW-Authenticate 响应头中给客户端返回的字符串,客户端直接回传给服务端就行
OAUTH 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是 OAUTH 的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此 OAuth 是安全的
使用方法
点击 “Get New Access Token” 按钮,显示如下
Token Name :Token 的名称
Grant Type: (授权类型):Authorization Code(授权码)、implicit(隐式)、Password Credentials(密码凭证)、Client Credentals(客户端凭证)
Callback URL:回调 URL
Auth URL:
Access Token URL :资源服务器的端点,交换访问令牌的授权代码
Client ID:在应用程序注册过程中给予客户端的客户端标识符
Client Secret:在应用程序注册过程中给予客户端的客户秘钥
Scope:访问请求的范围,可能有多个以空格分割的值
Client Authorization:Send as Basic Auth header(在标题中发送基本身份验证请求)、Send client credentials in body(在请求正文中发送客户端凭据)
hawk 是一个 HTTP 认证方案,使用 MAC(Message Authentication Code,消息认证码算法) 算法,它提供了对请求进行部分加密验证的认证 HTTP 请求的方法,包括 HTTP 方法、请求 URI 和主机。hawk 方案要求提供一个共享对称密匙在服务器与客户端之间,通常这个共享的凭证在初始 TLS 保护阶段建立的,或者是从客户端和服务器都可用的其他一些共享机密信息中获得的
使用方法:
点击 Prevew Request 按钮后会自动生成 authorization header
AWS 是 Amazon Web Services 请求的授权工作流程。AWS 使用基于键控 HMAC(哈希消息身份验证代码)的自定义 HTTP 方案进行身份验证。
使用方法
点击 Prevew Request 按钮后会自动生成 authorization header