Как недействительный токен доступа добавляет безопасность?

В ответ на вопрос Почему заканчиваются токены доступа? , в первом пункте указаны состояния:

[Знаки-носители] недолговечны и требуют обновления, они ограничивают время, когда злоумышленник может злоупотреблять украденным токеном.

Но когда используется токен доступа (из собственного приложения), клиент использует Refresh-Token для получения нового токена доступа и отправляет этот новый токен запрашивающему. Поэтому, если злоумышленник использует чужой токен доступа, ему просто будет отправлен новый токен доступа каждый раз.

Итак, кто заботится о том, как долго длится токен? Если злоумышленник получает это, они перешли на сеанс до тех пор, пока токен обновления обновится

Я уже знаю дюжину ответов на мой вопрос, но у меня есть вопросы к каждому ответу. Мой первоначальный вопрос был настолько длинным, что я объяснял каждый сценарий и то, как они несущественны или ложны (насколько я знаю). Поэтому, пожалуйста, попробуйте помочь мне понять, и я прокомментирую, если я думаю, что ответ имеет оговорки.

Добавление/Редактирование - Надеемся, что больше ответов на мою дополнительную информацию

  1. Веб-страница вызывает клиента с полномочиями владельца ресурса (пользователя)
  2. Клиент вызывает сервер Auth и получает токен доступа и обновления. Токен доступа истечет через 5 минут, токен обновления истечет через часы или дни или что-то еще.
  3. Клиент отправляет токен доступа на веб-страницу
  4. Владелец ресурса (Пользователь) использует веб-страницу
  5. Веб-страница отправляет подписчику доступа клиенту
  6. Клиент отправляет токен доступа на сервер ресурсов
  7. Сервер ресурсов проверяет токен доступа любым количеством способов
  8. Сервер ресурсов отправляет ресурсы клиенту
  9. Клиент отправляет ресурсы владельцу ресурса
  10. Владелец ресурса (пользователь) Продолжает использовать веб-страницу
  11. Клиент, либо во время каждого запроса, либо каждые 4 минуты и 30 секунд, использует токен обновления, чтобы получить новый токен доступа
  12. Клиент, либо во время каждого запроса, либо каждые 4 минуты и 30 секунд, отправляет новый токен доступа владельцу активного ресурса

Да? Нет? Поскольку Владелец ресурса активно использует веб-сайт, веб-сайт находится в постоянной связи с Клиентом, и Клиент получает новый токен доступа (с использованием токена обновления) и отправляет его обратно на веб-сайт, поэтому активный пользователь может продолжайте использовать сайт без выталкивания каждые 5 минут.

Поэтому, если ANY Person получает этот токен доступа и нажимает на него Клиентом, Клиент будет продолжать отправлять новые токены доступа тем, у кого есть этот токен доступа. Предоставлено: после одного обновления один из этих двух людей будет иметь плохой токен доступа и будет загружен, но не обязательно правильный человек.

3
21 янв. '16 в 21:03
источник поделиться
2 ответов

Ваша точка зрения заключается в том, что если злоумышленник может захватить ваш сеанс браузера, тогда они смогут получить доступ к стороннему ресурсу для всей длины токена обновления, как вы описали. Итак, какой смысл иметь токен с недолгосрочным доступом?

В этом есть определенная правда, но есть два общих ответа:

  • Использование токена обновления делает практически невозможным аннулирование пользователя, если сторонняя сторона выясняет, что сеанс был взят злоумышленником.
  • Система токена доступа/обновления токена используется для предотвращения или ограничения других видов атак, о которых вы не упомянули.

Что касается первого момента, помните, что токен доступа отправляется на сервер ресурсов, а не на сервер авторизации. Хотя в спецификации нет ничего, что мешает серверу ресурсов проверять достоверность пользователя, на практике это будет представлять проблемы производительности и размывает различие между сервером ресурсов и сервером авторизации. Вместо этого токены доступа, как правило, предназначены для самостоятельной проверки, не требуя доступа к некоторому внешнему ресурсу.

Учитывая это, единственный способ сделать недействительным пользователя - сделать это на сервере авторизации при отправке токена обновления. Сервер авторизации видит, что этот пользователь был помечен как скомпрометированный, и отказывается отправлять новый токен доступа.

Что касается второго момента, существует множество других сценариев безопасности, которые OAuth предназначен для защиты от другого, кроме сеанса браузера пользователя, который взят злоумышленником. Что делать, если кто-то может каким-то другим способом получить токен доступа? Поскольку сам токен доступа обычно не используется для доступа к клиенту (см. Ниже), они не смогут заставить клиента обновить токен для них, и, следовательно, тот факт, что токен доступа недолговечен будет преимуществом безопасности.

В качестве справочного материала оба этих пункта кратко изложены в этом письме в списке рассылки Рабочей группы Oauth.


Если вы посмотрите на поток, который вы описали в своем сообщении, я думаю, что ваше замешательство связано с тем, что клиент (веб-сервер) отправляет пользовательский агент (браузер) токен доступа (ваш шаг 3) и этот токен (в форма файла cookie) - это то, что клиент использует для аутентификации пользовательского агента. Хотя это возможно для веб-фреймворка для выполнения этих задач, ни один из них не является частью OAuth (и, как мне кажется, вообще не относится к веб-фреймворкам, по моему опыту).

4
15 июля '16 в 8:08
источник

Токены доступа недолговечны, обновленные токены долговечны. Токены доступа представлены на сервере ресурсов (и только на сервере ресурсов), на котором размещается защищенный контент для доступа. Обновить токены отображаются только на сервере авторизации, никогда не на сервере ресурсов. Поэтому, когда злоумышленник получает токен доступа, он может использовать его для жизни токена доступа, чтобы получить доступ к защищенному контенту.

Когда токен доступа истекает, нет способа получить новый, если он не получил токен обновления. Кроме того, при использовании токена обновления клиент обычно аутентифицируется на сервере авторизации, поэтому, даже если злоумышленник получил токен обновления, ему также потребуются учетные данные клиента, чтобы использовать его для получения нового токена доступа.

0
22 янв. '16 в 0:19
источник

Посмотрите другие вопросы по метке или Задайте вопрос