文章
· 九月 1, 2023 阅读大约需 2 分钟

JWT - JSON Web Token Authentication

JWT Authentication 原理及验证流程

原理

JWT 是一种结构紧凑、URL 安全的身份验证、授权或信息交换方式。在身份验证的情况下,服务器会向已通过身份验证的客户端提供一个 JWT,这样客户端在 JWT 过期之前就无需再提供密码来访问服务器上受保护的资源。

验证流程:

  1. 客户端发送Login到服务端
  2. 服务端返回 JWT给客户端
  3. 客户端校验JWT签名
  4. 客户端发送带有JWT签名的request到服务端
  5. 服务端检查JWT签名的有效期,在有效期内,则返回response给客户端,不在有效期内,返回error

 

JWT 配置步骤

  1. 创建REST服务
  2. 配置Web Application
  3. 安全配置
  4. 客户端发送Login,从服务器获取JWT
  5. 配置成功,发送带有JWT的request

1. 创建REST服务

在InterSystems IRIS中,可以使用/api/mgmnt自动创建REST的 .disp .impl 和 .spec 类,本篇文章不介绍具体创建REST服务的流程,具体内容请参考社区文章创建REST 服务

2. 配置Web Application

IRIS管理门户:系统管理 -> 安全 -> 应用程序 -> Web 应用程序

选中 ‘Use JWT Authentication’ 复选框,并设置‘JWT Access Token Timeout’ 和‘JWT Refresh Token Timeout’,

其中,JWT Access Token Timeout 为JWT 令牌超时秒数,如果你打算长时间测试 API,建议将此值设为 1 小时(3600 秒),JWT Refresh Token Timeout(令牌刷新超时的秒数)设为 900 秒。

3. 安全配置

IRIS管理门户:系统管理 -> 安全 -> 系统安全 -> 身份验证/Web 会话选项

‘JWT Issuer field’用于签名和验证 JWT 的签名算法。‘JWT Issuer field’将出现在 JWT 的声明部分,其目的是告知是谁给了你这个令牌。您可以将其设置为 "InterSystems"。

4. 客户端发送Login,从服务器获取JWT

使用基本 HTTP 身份验证或在请求正文中使用有效凭证发送POST请求到http://<api>/login端点,服务器端会返回一个访问令牌和一个刷新令牌,可在后续请求中使用。

body样例:
{
   "user": "superuser", "password": "iris"
}

5.配置成功,发送带有JWT的request

到此为止,您已经成功配置JWT,可以发送带有JWT的请求了。只需要在Header中添加Authorization,如下所示:

-H "Authorization: Bearer {access_token}"

讨论 (0)1
登录或注册以继续