Рекомендации по схеме HTTP-аутентификации (с использованием заголовков запросов)

У меня есть приложение rails, размещенное на Heroku, доступ к которому ограничен с помощью прокси-службы. Внешний сервер выступает в качестве посредника для всех запросов и обрабатывает аутентификацию пользователя. После аутентификации пользователя сервер (я думаю, LDAP) добавляет имя пользователя в заголовок запроса и перенаправляет их в мое приложение.

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

Как мне это сделать? Можно ли использовать Devise для этой цели?


Редактировать: я получил его работать с Devise/ пользовательской стратегией Warden, как это:

# config/initializers/my_strategy.rb
Warden::Strategies.add(:my_strategy) do 
  def valid? 
    true
  end 

  def authenticate! 
    if !request.headers["my_key"]
      fail!("You are not authorized to view this site.")
      redirect!("proxy_url")
    else
      username = request.headers["my_key"]
      user = User.find_by_username(username)

      if user.nil?
        user = User.create(:username => username)
      end

      success!(user)
    end
  end
end

#config/initializers/devise.rb
config.warden do |manager|  
  manager.default_strategies(:scope => :user).unshift :my_strategy
end

Мне нужно сделать это как можно более пуленепробиваемым. Могу ли я принять другие меры безопасности, чтобы кто-то не смог подделать заголовок запроса и получить доступ к моему сайту?

1 ответ

Решение

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

Другие вопросы по тегам