Использование конечной точки отзыва Google OAuth 2.0 делает недействительными все остальные токены для пользователя. - PullRequest
0 голосов
/ 18 декабря 2018

Короче говоря, я разработал расширение для браузера, в котором пользователь проходит аутентификацию на сторонних файловых хостах для использования в качестве внутреннего хранилища (на данный момент это только Dropbox и Google Drive).Некоторые из моих пользователей сообщают о 400 ошибках, когда расширение вызывает / tokeninfo, и в этот момент приложение не работает, вынуждая их повторно пройти аутентификацию.Теперь мне наконец удалось последовательно воспроизвести проблему -

Если пользователь устанавливает и аутентифицирует это расширение с помощью Google Диска в двух или более браузерах, отзыв одного токена доступа только из одного из браузеров приводит квсе остальные токены доступа / обновления становятся недействительными для приложения. .Эта проблема не возникает для Dropbox.

Это говорит о том, что либо:

1) Мое понимание конечной точки Google / revoke неверно, и отзыв одного токена всегда отменяет доступ ко всему приложению

2) Реализация метода отзыва OAuth в Google некорректна и не должна отзывать доступ из дополнительных токенов

3) Реализация метода отзыва OAuth в Dropbox неверна и должна аннулировать доступ из всех дополнительных токенов

Я недавно подал отчет на один из трекеров проблем Google, хотя, к сожалению, это, кажется, неактивное сообщество, и мне еще предстоит получить какие-либо отзывы.

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

Любое понимание может быть оченьоценили!

1 Ответ

0 голосов
/ 19 декабря 2018

Я не верю, что реализация Google не соответствует спецификации Oauth. RFC 7009 - на который ссылается модель угрозы Oauth , в частности, говорится об отзыве токена и заявляет:

В зависимости от политики отзыва сервера авторизации,аннулирование определенного токена может привести к отзыву связанных токенов и основного разрешения на авторизацию.Если конкретный токен является токеном обновления и сервер авторизации поддерживает отзыв маркеров доступа, то серверу авторизации СЛЕДУЕТ также аннулировать все токены доступа на основе того же разрешения авторизации (см. Примечание по реализации).Если токен, переданный в запрос, является токеном доступа, сервер МОЖЕТ также отозвать соответствующий токен обновления.

За этим очевидным безумием стоит метод.Если кто-то отзывает токен, это говорит о том, что он был взломан.Хотя можно подумать, что разрешить законному пользователю отозвать токен злоумышленника полезно, подумайте о противоположной стороне: вы не хотите, чтобы злоумышленник отозвал токен законного пользователя и не позволил ему / ей восстановить доступ.на его / ее счет.Самое безопасное - это все отозвать.Эта точная точка зрения упоминается в модели Oauth угроз , когда они говорят о ротации обновления маркера (дополнительная функция в Oauth):

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

Однако я согласен с тем, что это выглядит немного экстремально длятокен доступа, поскольку эти токены имеют ограниченный срок службы и ограниченную область действия.Жетоны обновления являются более серьезными и требуют более высокой безопасности. Auth0 реализует аннулирование токенов обновления следующим образом .

...