Мы используем Grails и плагин OAuth2, но это более общий вопрос OAuth2.Предотвращение запросов на вход с использованием OAuth2 с одним и тем же пользователем, но с несколькими устройствами
Мы пытаемся решить проблему, когда один и тот же пользователь использует несколько устройств, и мы не хотим запрашивать их пользователя/пароль, если это не является необходимым. Возьмем следующее, например:
- AT = Токен доступа
- RT = Refresh Токен
(Предположим, начальная АЦ можно получить, используя тип гранта пароль и оба устройства получают один и тот же 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
Я предполагаю, что мы не первые столкнуться с такого рода проблемы, поэтому я подумал, что обращусь к мыслям/предложениям.