跳到主要内容
版本:3.4.2

会话与token

要访问Micro-GNSS服务,需要进行鉴权。Micro-GNSS的鉴权有两种方式:

  • 本地用户鉴权信息表方式
  • 外部令牌验证方式

Micro-GNSS启动之前,可配置这两种方式的其中一种。

本地用户鉴权信息表方式

这种方式下,Micro-GNSS在启动时会加载一个记录用户名、密码的本地用户鉴权信息配置文件。然后客户端在与Micro-GNSS服务进行交互之前,首先要调用POST /login登录接口进行登录, 登录用户名和密码要与本地用户鉴权信息中的记录一致。在调用登录接口后,服务端会创建一个新的token(令牌),并放到已登录token列表中,然后将这个token返回给客户端。此token在后续的调用中需要一直都携带在请求头中, 以备服务端查验客户端的身份。一个token代表一个会话。

外部令牌验证方式

这种方式下,客户端首先在企业应用中完成登录,获得企业应用的token。然后每次调用Micro-GNSS的接口时,在请求头中带上此token。Micro-GNSS服务在验证token时,会调用企业应用提供的令牌验证接口,以验证token的有效性。验证成功后,token被缓存。

会话与WebSocket通知的关联

WebSocket订阅通知时,订阅地址中会包含一个token。当我们调用POST /strm/live/open接口或POST /strm/replay/open接口打开通道请求音视频后, 该请求相关的所有流媒体状态通知,只会推送到该请求对应的会话token的订阅地址,故而最终只会推送到该会话的订阅者。

token的有效性及其判断

服务端

对于每一个需要检查token的调用:

  • 本地用户鉴权信息表方式:服务端会检查提供的token是否在已登录token列表中,如是,再检查token是否仍然有效。
  • 外部令牌验证方式:
    • 如果token在本地没有缓存,则调用企业应用提供的令牌验证接口,以验证token的有效性;
    • 否则,检查缓存的token是否仍然有效,如果已经失效,则再次调用企业应用的令牌验证接口进行验证。

服务端设立一个token超时时长(默认10分钟零20秒),跟踪每个API调用所关联的token的最后调用时间,并在API调用后,更新token的最后调用时间:

  • 本地用户鉴权信息表方式:登录后,token的最后调用时间为当前时间
  • 外部令牌验证方式:调用企业应用提供的令牌验证接口后,token的最后调用时间为当前时间

服务端判断token是否仍然有效就是判断当前时间距离token的最后调用时间是否超过token超时时长,如是,则token已经失效。在外部令牌验证方式下,token有效性只影响token的本地缓存,本地缓存失效时,token有效性由企业应用的令牌验证接口确定。

客户端

本地用户鉴权信息表方式下

登录后应该保持得到的token,并在每次API调用中带上token。同时,为了确定token是否有效,客户端也应该自行跟踪最后的API调用时间:

  1. 登录后,以及每次成功调用后,记录最后调用时间。
  2. 每次调用除登录之外的API之前,先判断当前时间距离最后API调用时间是否已经超过服务端设置的超时时长(应略小于该时长,如服务端设置为10分钟20秒,则客户端将10分钟作为超时时长)。 如果已经超过,则在API调用之前重新登录,获得新的token。获得新的token后,如果需要使用WebSocket,则应重新连接WebSocket。

外部令牌验证方式下

客户端只需要按企业应用的token有效性规则去管理token即可。