Я хочу создать приложение Rails, которое предоставляет API для использования только авторизованными клиентскими приложениями (это будут мобильные приложения для iOS / Android). Я еще не начал работать над приложением, но основной метод доступа к базовым данным будет через API. Я рассматривал использование драгоценного камня grape , но мне нужно было бы добавить к нему слой аутентификации. Я думал о том, чтобы использовать devise и добавить другую модель для хранения деталей клиента, API-ключа и секретного ключа. При входе через API, ключ и секрет API возвращаются. Ключ API передается с каждым запросом, а секретный ключ - нет. Вместо этого он используется для подписи каждого запроса; параметры запроса упорядочены по имени, хешируются с использованием секретного ключа в качестве ключа хеширования. Эта подпись затем добавляется в качестве параметра к запросу.
Звучит ли эта система аутентификации логично и безопасно?
Я пытался создать прототип системы ранее, но столкнулся с трудностями при регистрации пользователя с помощью JSON с помощью devise. Сначала я получал ошибку CSRF. Затем я выключил protect_from_forgery и получал еще одну ошибку. Безопасно ли отключить это, если я аутентифицируюсь таким образом?