REST означает работу со стандартами Интернета, и стандартом для «безопасной» передачи в Интернете является SSL. Все остальное будет в стиле фанк и потребует дополнительных усилий по развертыванию для клиентов, которым должны быть доступны библиотеки шифрования.
Как только вы фиксируете SSL, для аутентификации в принципе не требуется ничего особенного. Вы можете снова перейти на веб-стандарты и использовать базовую аутентификацию HTTP (имя пользователя и секретный токен, отправляемый вместе с каждым запросом), поскольку это намного проще, чем сложный протокол подписи, и все же эффективно в контексте безопасного соединения. Вам просто нужно убедиться, что пароль никогда не выходит за рамки обычного текста; так что, если пароль когда-либо получен через обычное текстовое соединение, вы можете даже отключить пароль и отправить разработчику письмо. Вы также должны убедиться, что учетные данные нигде не зарегистрированы после получения, так же, как вы не регистрировали бы обычный пароль.
HTTP Digest является более безопасным подходом, поскольку он предотвращает передачу секретного токена; вместо этого это хеш, который сервер может проверить на другом конце. Хотя это может быть излишним для менее чувствительных приложений, если вы приняли меры предосторожности, упомянутые выше. В конце концов, пароль пользователя уже передается в виде простого текста, когда он входит в систему (если только вы не выполняете какое-то необычное шифрование JavaScript в браузере), а также его куки-файлы при каждом запросе.
Обратите внимание, что с помощью API лучше передавать клиенту токены - случайно сгенерированные строки - вместо пароля, с помощью которого разработчик входит на веб-сайт. Таким образом, разработчик должен иметь возможность войти на ваш сайт и сгенерировать новые токены, которые можно использовать для проверки API.
Основная причина использования токена в том, что его можно заменить, если он взломан, тогда как, если пароль взломан, владелец может войти в учетную запись разработчика и делать с ним все, что захочет. Еще одно преимущество токенов - вы можете выдавать несколько токенов одному и тому же разработчику. Возможно, потому что у них есть несколько приложений или они хотят получить токены с разными уровнями доступа.
(Обновлено, чтобы учесть последствия создания соединения только для SSL.)