silenceper / wechat

WeChat SDK for Go (微信SDK:简单、易用)
https://silenceper.com/wechat/
Apache License 2.0
4.74k stars 1.09k forks source link

[BUG] 企业微信 access_token 缓存没有区分应用导致应用调用异常 #706

Open johnpoint opened 1 year ago

johnpoint commented 1 year ago

描述

如何复现 步骤: 1、企业微信后台创建两个应用A、B 2、先使用 A 的配置进行API调用,此时行为正常 3、将配置替换为 B 的配置,此时发消息等API调用行为仍为B应用

原因 https://github.com/silenceper/wechat/blob/v2/credential/default_access_token.go#L201C31-L201C31 在这行缓存中,仅区分了 corp_id 而没有区分应用导致的

johnpoint commented 1 year ago

536

johnpoint commented 1 year ago

是否应该引入 agent_id 进行应用级别的隔离?

wwek commented 8 months ago

是否应该引入 agent_id 进行应用级别的隔离?

我也遇到这个问题。

wwek commented 8 months ago

accessToken 同企业下不同应用是不一样的 所以NewWorkAccessToken 需要默认 corpid + appid 隔离

wwek commented 7 months ago

是否应该引入 agent_id 进行应用级别的隔离?

应该引入,因为企业微信应用的accessToken本身就是按照 agent_id隔离的 也就是说对于企业微信应用来说需要 企业微信+corpid+agentid 组合为缓存key 现在的缓存key仅仅是 企业微信+corpid

houseme commented 7 months ago

是否应该引入 agent_id 进行应用级别的隔离?

应该引入,因为企业微信应用的accessToken本身就是按照 agent_id隔离的 也就是说对于企业微信应用来说需要 企业微信+corpid+agentid 组合为缓存key 现在的缓存key仅仅是 企业微信+corpid

@wwek 欢迎搞个pr修复改进