【发布时间】:2021-08-24 22:02:24
【问题描述】:
我们正在从我们的软件包中调用内部 API。每个客户端站点都有自己的一组 oAuth2 密钥和机密。
我们的问题是我们想为每个用户获取一个唯一的令牌,但是在当前的实现中,我们为每个站点获取一个唯一的令牌(每小时过期)。由于每个用户拥有自己的一组凭据是不切实际的,是否可以为每个用户获取一个唯一的令牌但仍使用相同的密钥和秘密?
我看到一个帖子建议使用范围,但这没有意义。范围是定义用户访问权限,而不是令牌生成。另外,我测试过,还是不行。
[https://stackoverflow.com/questions/59022460/is-it-possible-to-have-multiple-valid-access-tokens-with-the-same-client-credent][1]
我们也不能使用 token_expiry,因为我们不知道当前令牌是什么(我们不会在任何地方持久化它)。
【问题讨论】:
-
我不完全确定我理解你的问题。通常,每个登录调用都会生成一个 jwt。然后,此令牌与每个请求一起传递,直到用户注销或令牌过期。客户端(我怀疑资源服务器?)应该只验证令牌并在必要时触发授权代码流。范围用于定义令牌中包含哪些信息以及令牌可以用于哪些操作(常见范围为
profile、email、...)。 -
@Turning85,oAuth 令牌是基于您的凭据(密钥和秘密)而不是每个用户的问题。如果 UserA 调用 API,他将获得 TokenX。当 UserB 调用相同的 API 时,他将获得相同的 TokenX,因为他们使用相同的凭据。密钥和秘密是组织级别而不是用户级别的问题,因此组织中的每个人都将获得相同的令牌。我们希望每个用户都获得一个唯一的令牌,即使他们使用相同的凭据。如果可以在令牌 URL 中添加设备之类的东西,这会产生唯一的令牌,那就太好了。
-
我们正在使用 WSO2,我刚刚发现您可以添加“scope=device_xxxx”以获得每个设备的唯一令牌...现在让它工作...docs.wso2.com/display/AM260/Working+with+Access+Tokens跨度>