В чем преимущество общего секрета в OAuth 1.0A?
В чем преимущество общего секрета OAuth 1.0A?
Из того, что я понимаю, клиент может зарегистрироваться на защищенном сервере ресурсов, на котором клиент получает в ответ и идентификатор клиента, и общий секрет. Несмотря на то, что я прочитал спецификации OAuth 1.0A снова и снова - мне трудно понять два вопроса:
- Зачем нужен общий секрет?
- Почему идентификатор клиента недостаточно хорош для того, чтобы сервер мог проверить клиента? Какие дополнительные преимущества безопасности, если таковые имеются, предоставляет общий секрет?
Я не ищу, чтобы вы цитировали спецификацию - на данный момент мне нужно более простое разъяснение, так как мне трудно понять, что говорится в спецификации (в любом случае, она действительно не вдавается в детали общего секрета),
1 ответ
Секрет нужен для генерации подписи под запросом. Без подписи вы не можете быть уверены в двух вещах:
- что третья сторона не перехватила запрос, сделанный клиентом, изменила его, а затем передала, чтобы сделать что-то совершенно другое
- что третья сторона не выдает себя за действующего потребителя и не делает запросы без их участия вообще
При условии, что только поставщик и потребитель знают секреты, подпись и проверка предотвращают эти несанкционированные запросы. Этот пост подробно рассказывает об идее подписи. В частности, следующий отрывок очень актуален для вашего вопроса:
Само по себе хеширование не проверяет личность отправителя, а только целостность данных. Чтобы позволить получателю проверить, что запрос поступил от заявленного отправителя, алгоритм хеширования объединяется с общим секретом. Если обе стороны согласны с каким-то общим секретом, известным только им, они могут добавить его к хешируемому контенту. Это можно сделать, просто добавив секрет к содержимому, или используя более сложный алгоритм со встроенным механизмом для таких секретов, как HMAC. В любом случае для создания и проверки подписи необходим доступ к общему секрету, который не позволяет злоумышленникам подделывать или изменять запросы.