Каждый раз, когда пользователь входит в систему, он получает новый access_token
и новый refresh_token
.Как реализовать Обновить токены с некоторой степенью безопасности?
Когда истекает его access_token
, он использует свой refresh_token
, чтобы получить новый access_token
.
Если злоумышленник каким-то образом получает доступ к его refresh_token
... то по OAuth 2.0 documentation:
Сервер авторизации может использовать обновления маркера вращение, в котором новый маркер обновления выдается с каждым доступом ответ обновления токена. Предыдущий токен обновления недействителен, но сохранен сервером авторизации. Если токен обновления скомпрометирован и впоследствии используется как злоумышленником, так и законным клиентом , один из них представит недействительный токен , который будет информировать сервер авторизации о нарушении.
Так что, в основном, если есть refresh_token
, то используется дважды, я буду замечать атаку.
А как же, если законный пользователь никогда не использует свой токен обновления (который был украден злоумышленником)? Злоумышленник сможет снова и снова подключаться и обновляться, если законный пользователь не сможет его обнаружить.
Звучит как редкая ситуация? Что делать, если вы приходите ко мне на обед и заходите на мой компьютер, и я получаю ваш refresh_token и access_token, и вы больше никогда не будете использовать этот refresh_token? Никто не заметит атаки.
Что можно решить?
Конечно, я имел в виду клиентское приложение! Затем вы говорите «секрет клиента», но когда это приложение для javascript, как я могу справиться с такой ситуацией? Я не найду никаких ресурсов. Что касается обеда, пасты. – lapin
приложение javascript должно использовать неявный тип гранта, который не выдаёт токен обновления, потому что приложение javascript не может хранить секрет клиента. Макароны хорошие :) – iandayman
Хорошо, но тогда, как каждое мобильное приложение там достигает аутентификации (не спрашивая дважды для доверенных лиц). Сервер авторизации и сервер Resouce - это тот же сервер, который мы создали.Неявный поток означает отсутствие токена обновления, а затем, как мобильные приложения там достигают аутентификации? – lapin