Я изучаю OAuth, и у меня в голове вопрос, я не могу найти ответ…
Я понял токен запроса для авторизации приложения или нет использовать API. Но как только пользователь получит токен доступа, что произойдет, если кто-то украдет его токен доступа?
Представьте, что у нас есть что-то вроде http://www.example.com/api/article/1?access_token= ****** access_token ******
Если я передам этот URL другому пользователю, другой получит мой доступ и API больше не будет защищен?
Краткий ответ: Да, для OAuth2 - тот, кто имеет действительный токен access_token, будет иметь доступ к ресурсам, указанным этим токеном. Как долго зависит от OAuth2 реализация провайдера.
Длинный ответ об OAuth1 и 2:
Когда дело доходит до OAuth 1 , токена доступа недостаточно . Вам также потребуется секретный токен доступа, а также ключ и секретный ключ пользователя. Все еще полезно сохранять конфиденциальность токенов доступа и ограничивать их объем и время действия, но вы не можете использовать токен доступа без секретных данных клиента и токена. OAuth 1 не требует использования SSL, потому что криптография встроена прямо в спецификацию.
OAuth 2 отличается - возможно, более важно, чтобы токены доступа оставались конфиденциальными. Поэтому провайдер API должен гарантировать, что токены доступа, которые в OAuth2 также известны как токены канала-носителя, действительны только в течение максимально короткого времени. Эти токены работают как пароли и, если они перехвачены, могут быть немедленно использованы злоумышленником. Следовательно, спецификация OAuth2 (с токеном-носителем) требует, чтобы все взаимодействие осуществлялось по протоколу SSL - поскольку криптография не встроена в спецификацию. Обычно токены доступа имеют короткий срок действия, который может обновляться «токеном обновления», который имеет более длительный срок действия, но передается только тогда, когда потребитель получает исходный токен носителя и когда токен носителя обновляется.