Как обеспечить доступ к API REST только известным потребителям

Чтобы гарантировать доступ к API REST только известным потребителям, клиентские приложения используют для подписи каждого HTTP-запроса с секретом, а затем отправляют итоговую подпись вместе с ключом API на сервер.

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

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

2 ответа

Решение

После некоторого поиска в Google я нашел эту замечательную статью и только что реализовал решение, которое она описывает;-)

Вы можете проверить домен и предоставить параметр SOP, чтобы ограничить его только известными доменами. Вы можете отбрасывать запросы по ip источника, если ips будет постоянным.

Более того, вы можете иметь на своем сервере генератор секретных данных, клиенту которого нужно оттуда звонить на серверы и передавать его в свой код js, оттуда его можно присоединить к вызову API. Таким образом, клиент с SOP может убедиться, что его js не введен. Вы можете проверить IP клиентов перед предоставлением ответа.

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

Другие вопросы по тегам