使用具有相同用户但多个设备的OAuth2防止登录请求

时间:2015-03-30 14:22:05

标签: grails oauth spring-security oauth-2.0 spring-security-oauth2

我们正在使用Grails和OAuth2插件,但这是一个更普遍的OAuth2问题。

我们正试图解决同一用户使用多个设备的问题,如果没有必要,我们不想提示他们的用户/密码。以下面的例子为例:

  • AT =访问令牌
  • RT =刷新令牌

(假设可以使用密码授权类型获得初始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

我认为我们不是第一个遇到这类问题的人,所以我想我会伸手去寻找想法/建议。

1 个答案:

答案 0 :(得分:0)

在我看来,您的2台设备需要获得不同的访问令牌和刷新令牌。授予的不同令牌的数量取决于TokenStore实施,因此您可能应该集中精力。也许您可以使用自定义AuthenticationKeyGenerator来确保这2个设备获得不同的令牌?或者使用JWT?