Token使用说明

1.Token介绍

JWT(JSON Web Token)是一种用于认证和授权的开放标准。它基于JSON(JavaScript Object Notation)格式,并被设计用于在网络应用之间安全地传输声明(claims)信息。

JWT由三部分组成:头部(Header)、负载(Payload)和签名(Signature)。头部包含了JWT的类型以及所使用的签名算法,负载包含了需要传输的信息,而签名用于验证JWT的完整性和真实性。

在TuGraph中,JWT用于实现无状态的认证和授权机制。当用户登录成功后,服务端会生成一个JWT并将其返回给客户端。客户端在后续的请求中将这个JWT作为身份凭证传递给服务端。服务端收到JWT后,通过验证签名和解析负载中的信息,判断用户的身份和权限,并决定是否允许该请求的执行。

2. Token有效期

2.1. 浏览器Token交互逻辑

  1. 用户打开浏览器,输入账号密码,并点击登录。

  2. 前端调用登录接口,向后端输入账号和密码。

  3. 后端接收到账号密码后,进行校验,校验成功后,返回Token。

  4. 前端将Token存储在浏览器缓存中,后续请求都要携带此Token。

  5. 如果前端,主动点击登出和关闭页面,前端应主动调用登出接口,向后端传递Token。

  6. 后端接收后,将Token失效,返回状态码200,以及“等出成功”。前端接收到信息后,清空浏览器内存中的Token,并将页面退至登录页。

  7. Token失效(初始设置为24小时),需要用户重新登录。

2.3. Token有效期刷新机制

Token有效期存在刷新机制,默认关闭。如果打开后,Token的安全性会更高,实现上则存在两个时间戳。

第一个时间戳refresh_time用于判定Token是否过期(默认24小时):过期后可以调用刷新接口获取新的Token,可以设置为更短的时间,比如1小时。

第二个时间戳expire_time为强制过期时间戳(默认24小时):过期后必须重新登陆。

2.4. Token有效期修改

为了方便开发者自行开发,TuGraph提供了两种方式修改有效期,均需要admin权限。

  • 通过接口调用设置。涉及有效期修改的接口update_token_time和有效期查询接口get_token_time。 具体可查询REST接口文档

  • 通过启动参数设置。server端启动时,添加参数-unlimited_token 1 参数可以设置为无期限。可参考服务运行文档

3. 客户端发送Token相关请求介绍

客户端会两种协议处理相关请求,一种是REST,一种是RPC。

3.1. REST

如果客户端使用REST协议(包括Browser浏览器),由于是短链接,在每一次请求中都需要携带Token,过期后需要获取新的Token。

对于自行开发的客户端,若采用REST协议则需要考虑Token的逻辑。

3.2. RPC

如果客户端使用RPC协议(包括官方的C++/Java/Python),使用长连接保持,登陆后不涉及Token操作。

4. Token上限

Token上限是指一个用户最多可以同时拥有的Token数量。为防止无限登陆,Token上限默认为10000。由于Token生成逻辑和时间强相关,每登录一次会生成一个Token进行存储,Token有效期默认为24小时,因此建议登录后不使用的Token及时登出。