Рубиновые способы аутентификации с использованием заголовков? - PullRequest
1 голос
/ 23 мая 2010

Я проектирую систему API в Ruby-on-Rails, и я хочу иметь возможность регистрировать запросы и аутентифицировать пользователей.

Однако у меня нет традиционной системы входа в систему, я хочу использовать API-ключ и подпись, которую пользователи могут отправлять в заголовках HTTP в запросе.(Аналогично тому, как работают сервисы Amazon)

Вместо запроса /users/12345/photos/create я хочу иметь возможность запросить /photos/create и отправить заголовок, который говорит X-APIKey: 12345, а затем проверить запрос с подписью.

Есть ли какие-нибудь драгоценные камни, которые можно приспособить для этого?Или еще лучше, какие-нибудь драгоценные камни, которые делают это без адаптации?

Или вы считаете, что было бы разумнее, если бы они отправляли ключ API в каждом запросе, используя переменные POST / GET?

1 Ответ

1 голос
/ 23 мая 2010

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

Я бы не стал искать существующий гем, но реализовал его сам;делать это не должно быть слишком сложно.Вот пример стандартной реализации:

class ApplicationController < ActionController::Base
  def authenticated?
    current_user.is_a?(User)
  end

  def current_user
    user_from_session || user_from_api_key
  end

  def user_from_session
    # ... use session[:user] or whatever.
  end

  def user_from_api_key
    User.find_by_api_key(request.headers["X-APIKey"])
  end
end

Это настолько конкретно, насколько я могу понять, поскольку вы ничего не говорите о текущих настройках аутентификации.

...