DTX, 1. Допустим, AuthHash привязан к устройству на основе возможностей (device capability) и AuthHash - не так просто украсть из кук браузера, если выставлен флаг http security - такие не получить через JS, но получить через http-запрос с сервера.
2. Все протухшие токены - ВООБЩЕ не проблема. Это происходит автоматом: диалог клиента с сервером без участия юзера. Если как на картинке - то по цепочке токены перевыписываются и передача продолжается.
3. Да, и это намного лучше, чем jwt однозначно, т.к. это наиболее гибкое, простое и надёжное решение.
DTX,
1. Почему не подойдёт? ClientID=DeviceID. IP можно привязывать как подсеть, а не как IP-адрес. А подсеть - можно получить от провайдера и т.д. Можно не привязывать к IP вообще. Это вопрос уже реализации клиента.
2. Если ответ не получен и соединение открыто - значит его по факту нет и он не вступил в силу на сервере. Старый ключ - работоспособен до тех пор, пока сервер не завершит передачу нового на клиент и не закроет соединение.
6. Токен живёт ровно столько, сколько нужно Вам.