Прошло много времени с тех пор, как был задан этот вопрос, и с тех пор было создано много замечательных ресурсов, которые я кратко опишу и сошлюсь на ссылку ниже.
Добавление функциональности поставщика OAuth 2
Gem Doorkeeper позволяет реализовать функциональность поставщика OAuth, и хорошо документировано и в хорошем состоянии. Он хорошо интегрируется с Devise , и есть примеры приложений для изучения.
На стороне клиента (для тестирования интеграции или если вы хотите предоставить клиент Ruby для внешних разработчиков), вы можете использовать OmniAuth , и документы Doorkeeper проведут вас через процесс создание собственной стратегии .
Вам может не понадобиться OAuth?
В зависимости от того, какой тип API вы создаете, вы можете обнаружить, что OAuth является излишним. OAuth полезен в тех случаях, когда вы являетесь поставщиком контента, а разработчик является третьей стороной , которая хочет получить доступ к информации от имени пользователя , но без необходимости знать его пароль.
Если ваш вариант использования более прост (например, вы можете предоставить секретный токен и ключ непосредственно пользователю API), тогда генерации и проверки токенов доступа может быть достаточно. В этом случае вы генерируете ключ (используя SecureRandom.urlsafe_base64
или has_secure_token
, если вы находитесь на Rails 5) и сохраняете его. Пользователь API предоставляет этот токен при каждом запросе для аутентификации, и вы можете повторно создать токен, если оригинал когда-либо будет скомпрометирован.
Более подробная информация об этом здесь и здесь .