我们正在使用Grails和OAuth2插件,但这是一个更普遍的OAuth2问题。
我们正试图解决同一用户使用多个设备的问题,如果没有必要,我们不想提示他们的用户/密码。以下面的例子为例:
(假设可以使用密码授权类型获得初始AT,并且两个设备都获得相同的AT)
Device 1:
1. Refresh, new AT
5. Bad AT
6. Refresh denied (bad RT)
7. Need Password for AT, new RT ... Repeats every time it expires
Device 2:
2. Bad AT
3. Refresh denied (bad RT)
4. Need Password for new AT/RT
我们显然不想缓存密码,并且在我们有刷新令牌时不需要提示用户。有一个标志可以重用刷新令牌,但如果我们这样做,我们最终会生成新的访问令牌,例如:
Device 1:
1. Refresh, new AT
4. Bad AT
5. Refresh, new AT… Repeats every request
Device 2:
2. Bad AT
3. Refresh, new AT
我认为我们不是第一个遇到这类问题的人,所以我想我会伸手去寻找想法/建议。
答案 0 :(得分:0)
在我看来,您的2台设备需要获得不同的访问令牌和刷新令牌。授予的不同令牌的数量取决于TokenStore
实施,因此您可能应该集中精力。也许您可以使用自定义AuthenticationKeyGenerator
来确保这2个设备获得不同的令牌?或者使用JWT?