如何区分Google跨账号保护(RISC)中的流及同流JTI事件去重
Google RISC 流区分与事件去重方案
一、如何区分不同的事件流
Google RISC中的「流」本质上和**订阅(Subscription)**一一对应,区分不同流可以通过这两个核心方式:
- 每个订阅都会生成一个唯一的
subscription_id,这是流的专属标识。所有属于该订阅的事件,都会在请求或事件元数据中携带这个ID,以此判断事件所属的流。 - 从接收方式来看,每个独立的Webhook端点对应一个流;如果用拉取模式,每次拉取请求指定的订阅ID也直接明确了当前操作的流。
二、事件去重时仅搜索同一流的JTI
要确保去重时只在同一流内校验jti,核心是把jti和所属的subscription_id绑定起来处理:
- 存储层面:保存事件记录时,不要单独存储
jti,而是将subscription_id和jti作为联合标识(比如数据库的复合主键,或者组合索引)。 - 校验层面:当接收到新事件时,先提取事件对应的
subscription_id,再用「subscription_id+jti」的组合去查询已存储的事件记录。只有当这两个值完全匹配时,才判定为重复事件,忽略该事件即可。 - 举个实际的查询示例(SQL):
如果返回结果大于0,说明该事件在当前流中已存在,属于重复事件。SELECT COUNT(*) FROM risc_event_logs WHERE subscription_id = 'xxx' AND jti = 'yyy';
内容的提问来源于stack exchange,提问作者Felipe Müller
相关产品推荐
相关产品推荐

