Аутентификация Ruby on Rails API

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

1.) Простая аутентификация по токену

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

Это работает так: вы запускаете простую команду, которая в значительной степени генерирует файл миграции для пользовательской модели.

rails g migration add_authentication_token_to_users "authentication_token:string{30}:uniq"

Это существенно добавляет authentication_token поле йо ваша пользовательская модель. Затем вы добавляете макрос в свою пользовательскую модель следующим образом.

class User < ApplicationRecord acts_as_token_authenticatable # ... end

Затем вы добавляете еще один макрос в свой ApplicationController

acts_as_token_authentication_handler_for User, fallback: :none

Тогда любая конечная точка, наследующая от ApplicationController будет работать с аутентификацией по токену.

На клиенте для аутентификации с конечной точкой пользователь должен передать X-User-Email а также X-User-Token в заголовке. Вот и все, что касается простой жемчужины проверки подлинности токена. Поскольку гем уже работает с devise, все ваши утилиты devise должны работать отлично.

Если вы хотите узнать больше об этом методе аутентификации, вы можете проверить наше бесплатное видео покрывая этот драгоценный камень.

токен-аутентификация-часть-1-обложка

2.) Аутентификация JWT с помощью Devise

JSON Web Token очень популярен, когда речь идет об аутентификации API. Это потому, что это делает жизнь удобной, когда дело доходит до защиты вашего API. Как? Ну, если вы создаете свой API для нескольких клиентов, используя JWT, у вас есть 1 метод аутентификации, который будет работать на всех платформах, независимо от того, аутентифицируете ли вы клиента в браузере, мобильном приложении или любой другой службе на стороне сервера, потребляющей данные из ваш апи.

Он поддерживает массу функций и позволяет вам генерировать токен для клиента на лету, не сохраняя ничего в базе данных, потому что сам токен содержит информацию о сеансе. Вы можете сгенерировать токен и встроить в него любую информацию. Например

{ 
  "user_id": 1, 
    "exp": 1516239022
}

Превращается в

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoxLCJleHAiOjE1MTYyMzkwMjJ9.UCTyi_gPUNhfeelaWxMTfnPtRtNByDUMxKTRpkyewQI

Это криптографически безопасный токен, созданный с использованием секретного ключа на сервере. Это означает, что его может расшифровать только любая сторона с секретным ключом. Это означает, что если этот секретный ключ будет скомпрометирован, ваш метод токена аутентификации будет скомпрометирован.

Затем клиент встраивает этот токен в заголовок, который обычно называется Authorization. Каждый запрос должен быть аутентифицирован на сервере с использованием этого токена. Это означает, что токен, отправленный клиентом, должен быть декодирован на сервере, а данные могут быть проверены на стороне сервера. Вы можете узнать больше об основах JWT в наше бесплатное видео.

jwt-часть-1-обложка

В видео мы покажем вам, как сгенерировать базовый токен JWT, используя jwt драгоценный камень. Мы покажем вам, как полностью разработать решение для аутентификации с использованием JWT.

Как только вы начнете работать с JWT в своем Rails API, вы поймете, что он не работает с вашей существующей настройкой устройства. Вот почему мы недавно выпустили 2 эпизода, в которых показано, как интегрировать решение JWT с разработкой путем создания пользовательской стратегии разработки. Вы можете проверить их ниже. Они являются эксклюзивными для участников, поэтому вам нужно стать участником за 9 долларов в месяц, однако, если вам просто нужен пример кода, это доступно бесплатно.

разработка-jwt-интеграция-часть-1-обложка

разработка-jwt-интеграция-часть-2-обложка

Если вы создаете API с Ruby on Rails и не знаете, с чего начать, я бы порекомендовал перейти на JWT. Поскольку JWT более ориентирован на будущее, и есть стандарт, которому вы можете следовать. Наличие стандарта может быть полезным, поскольку у вас есть 1 система аутентификации, которая работает на многих платформах/языках. Поэтому, если вы создаете микросервисы на нескольких языках, вы можете использовать библиотеки для языка вашего сервиса, и разные сервисы используют 1 систему аутентификации, которая работает друг с другом.

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

На наш сайт мы используем JWT для многих целей, аутентификации наших пользователей, связи между сервисами и аутентификации воспроизведения видео. Поскольку мы можем встраивать данные в сам токен, это делает его очень гибким для многих вещей.

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *