跳转到内容

身份验证

Restorm 没有“身份验证类型”下拉菜单。它提供的是更通用的东西:身份验证请求, 一个完整的请求,其职责是为其他请求产生请求头。

好处在于:任何方案都可以被建模出来,包括任何下拉列表都没有预设的那些 —— 两步式交换、签名令牌、自研 API。代价在于:您需要把它写一次。

在某个环境文件夹上右键 ▸ 添加 ▸ 身份验证请求

首先像配置任何 HTTP 请求那样配置这次调用:方法、URL、请求头、正文。 然后打开它的配置标签页,那里承载着三项专属于身份验证的设置。

身份验证请求的“配置”标签页,包含三个部分:产生的请求头、以秒为单位的过期时间,以及认证错误码

这条路由会注入到每一个引用它的请求中的请求头清单。每一个值都是一个 针对身份验证请求的响应正文求值的表达式

请求头
Authorization{{token_type}} {{access_token}}

同样针对响应正文求值的一个表达式,给出以秒为单位的有效时长 —— 通常是 {{expires_in}}。留空时,令牌永不自行过期。

使用该路由的请求收到这些 HTTP 状态码时,会触发令牌续期并自动重试。 默认为 401403

身份验证请求是您在树中创建的那个元素。认证路由是同一个元素从另一个请求的 角度、在把它挂上去的那个选择器中所呈现的样子。两个说法指的是同一个实体, 只是出现在界面的两个位置。

在请求的标签页里,smartbar 中有一个 认证路由选择器,列出该环境文件夹下的所有路由。默认标签是无认证

一旦挂上,每次发送都会注入产生的请求头,令牌会被缓存到过期为止, 而 401 会触发一次无感知的续期。

请求:POST https://auth.exemple.test/oauth/token,正文为 x-www-form-urlencoded,包含 grant_type=client_credentialsclient_id={{clientId}}client_secret={{clientSecret}} (其中的密文使用密钥类型的值)。

产生的请求头:Authorization = {{token_type}} {{access_token}}。 过期时间:{{expires_in}}

如果您已经有了凭据,那就完全不需要额外的请求:直接在请求上 (或在文件夹上)设置这个请求头:

Authorization = Basic {{base64Encode (append (append user ":") password)}}

一个请求头或一个查询参数就够了: X-API-Key = {{apiKey}},其中的密钥是一个密钥类型的变量。

创建一个场景:第一次调用,提取中间码, 第二次调用,然后用设置变量把令牌写入运行变量。场景中后续的请求用 {{jeton}} 读取它。

导入一份规范时,其中声明的安全方案会被翻译成预先接好线的请求头或参数, 并为您创建好一个对应的环境变量:

规范中的方案Restorm 生成的内容
apiKey(请求头或查询参数)一个以该方案命名的键值对,值为 {{<schema>}}
http / basicAuthorization: Basic {{<schema>_credentials}}
http / beareroauth2openIdConnectAuthorization: Bearer {{<schema>_token}}

您只需填好那个变量,或者在需要自动续期时把它替换为一条认证路由。

有些协议并不经由 HTTP 请求头。它们的凭据是请求本身的字段:

协议字段
MQTTusernamepassword、客户端标识
AMQPusernamepassword、vhost
Redispassword
KafkaSASL 机制(plainscram-sha-256scram-sha-512)、用户标识、密码、TLS
STOMPCONNECT 帧的 loginpasscode 请求头
gRPC调用的元数据

上述每一个密码都接受密钥类型的值。