会话令牌
会话令牌是一种用户会话认证机制,用于在嵌入式应用中确保客户端与应用后端之间的请求通信安全。用户在平台认证后,系统会颁发一个临时且唯一的会话令牌,该令牌存储在浏览器的 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 每次请求前获取新的会话令牌,以确保令牌的有效性。
- 会话验证:在验证会话令牌时,系统会同时检查用户的登录状态,确保令牌的使用者具有有效的登录会话。