Skip to content

会话令牌

会话令牌是一种用户会话认证机制,用于在嵌入式应用中确保客户端与应用后端之间的请求通信安全。用户在平台认证后,系统会颁发一个临时且唯一的会话令牌,该令牌存储在浏览器的 Cookie 中,并伴随每次请求发送,以便验证用户身份并维持会话状态。

TIP

由于浏览器 Cookie 可能面临跨域问题,所有嵌入式应用必须采用会话令牌来进行认证。若应用未采用此认证机制可能对用户安全造成威胁,平台将介入并要求开发者进行必要的整改。

认证流程

会话令牌的认证流程始于商家在 Genstore 平台上安装应用,涵盖以下关键步骤:

  • 请求会话令牌
  • 使用会话令牌

请求会话令牌

应用通过 Genstore App Bridge(嵌入式应用前端框架),在用户界面渲染时创建用户会话,并请求会话令牌:

使用会话令牌

应用接收到会话令牌后,必须验证其签名和有效期:

会话令牌数据结构

会话令牌使用 JSON Web Token(JWT) 格式,包括 Header 与 Payload 两部分。

Header 示例

json
{
	"alg": "HS256",
	"typ": "JWT"
}

参数说明:

  • alg: 编码 JWT 的算法
  • typ: 会话令牌类型

Payload 示例

json
{
	"aud": "<client ID>",
	"sub": "<user ID>",
	"exp": "<time in seconds>",
	"iat": "<time in seconds>",
	"sid": "<session ID>"
	"sig": "<signature>"
}

参数说明:

  • aud:接收应用的客户端 ID。
  • sub:会话令牌所针对的用户。
  • exp:会话令牌过期时间。
  • iat:会话令牌的颁发时间。
  • sid:每个用户和应用程序唯一的会话 ID。
  • sig:Genstore 签名。

Payload 示例

json
{
    "aud"=>"client-id-666",
    "sub"=>"22",
    "exp"=>1731394399,
    "nbf"=>1731394399,
    "iat"=>1731394399,
    "sid"=>"5b2b31c25aaea182f273c0fea3d25d3eb7fd3ad24c682d44349057021a448584",
    "sig"=>"61c70f4e7f2fb229e4c475bffc8cc1738f730270c17cf0b2f0f276b0f7621087",
}

注意事项

  • 会话独立性:每个用户在应用与商店间有一个独立的会话令牌,确保每个会话的安全性。
  • 令牌有效期:会话令牌的有效期为 1 分钟,需频繁更新以维持会话的活性。
  • 令牌获取:应用必须通过 App Bridge 每次请求前获取新的会话令牌,以确保令牌的有效性。
  • 会话验证:在验证会话令牌时,系统会同时检查用户的登录状态,确保令牌的使用者具有有效的登录会话。