准备向 API 发起已验证的请求
创建并配置服务账号后,您的应用程序需要完成以下步骤:
- 创建 JSON Web Token(JWT),其中包含头部(header)、负载(payload)和签名(signature);
- 向 OAuth2 身份验证平台请求访问令牌(
AccessToken); - 处理身份验证平台返回的 JSON 响应。
如果响应中包含访问令牌,您就可以使用它向该服务账号有权限访问的 Unico 产品 API 发起请求。(如果响应中不包含访问令牌,则可能是您的 JWT 和令牌请求有误,或者该服务账号没有访问所请求资源的必要权限。)
上述请求生成的访问令牌默认有效期为 3600 秒,但这可能因贵公司设置的安全配置而有所不同。当访问令牌过期时,您的应用程序应生成一个新的 JWT,对其签名,并向身份验证平台请求一个新的访问令牌。
1 — 创建 JWT
JWT 由三部分组成:头部、负载和签名。头部和负载均为 JSON 对象。这些 JSON 对象先以 UTF-8 序列化,然后使用 Base64url 编码¹。这种编码方式在重复编码操作的情况下能提供更强的抗变化能力。头部、负载和签名之间用句点(.)字符连接。
JWT 的组成方式如下:
{Base64url 编码的头部}.{Base64url 编码的负载}.{Base64url 编码的签名}
用于签名的基础文本组成方式如下:
{Base64url 编码的头部}.{Base64url 编码的负载}
1.1 — 构造 JWT 头部
头部由两个字段组成,用于指定签名算法和令牌格式。这两个字段均为必填项,且每个字段只有一个取值。服务账号依赖 RSA SHA-256 算法和 JWT 令牌格式。因此,头部的 JSON 表示如下:
{"alg":"RS256","typ":"JWT"}
其 Base64url 表示如下:
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9
1.2 — 构造 JWT 负载
JWT 负载包含关于该 JWT 的信息,包括请求的权限(作用域)、发起访问请求的账号、签发者、令牌签发时间以及令牌的有效期。大多数字段均为必填项。与 JWT 头部一样,负载也是一个 JSON 对象,并参与签名的构成。