Как работает JWT и OAuth по отдельности я приблизительно представляю. Но как их совместить и при этом оставить возможность работы с несколькими устройствами? Я вижу это так
1. Клиент генерирует идентификатор для устройства. **DeviceId**
2. Передает **DeviceId**, **Login**, **Password** на сервер
3. Сервер генерирует **AccessToken**, **RefreshToken** и сохраняет в связке с **DeviceId** чтоб разграничить сессии на разных устройствах.
Тут то и вопросы:
1. Что из себя представляет в таком случае токены случайные хеши, или это JWT с каким-то paylaod внутри.
2. Нужно ли сохранять **AccessToken** в базу? Или он хранит в себе JWT с авторизированным пользователем, а сохраняется только **RefreshToken**
3. Что касательно компрометации токена на одном из устройств? При использовании **RefreshToken** атакующий разлогинит пользователя только на этом устройстве, либо **RefreshToken** только один для пользователя, и по истечению **AccessToken** на одном из устройств и генерации новой пары, будут разлогинены все устройства?
Как это вообще делается по уму, у кого есть опыт реализации?