我在Heroku上托管了一个Rails应用程序,该应用程序通过使用代理服务来限制访问。外部服务器充当所有请求的中介并处理用户身份验证。一旦用户进行了认证,服务器(我认为是LDAP)会将用户名添加到请求标头并将其重定向到我的应用程序。关于HTTP身份验证方案的建议(使用请求标头)
我想使用请求头中的用户名来验证我的应用中的用户。基本上,如果用户不存在,我会创建一个用户使用该用户名(不需要密码),如果不是,我只需登录他们。我将存储在我的应用程序的数据库中的用户。
我该怎么做?为此可以使用Devise吗?
编辑:我得到了它与设计这样的/自定义的监狱长战略合作:
# 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
我需要作出这个作为防弹越好。我是否还可以采取其他安全措施来确保某人无法欺骗请求标题并访问我的网站?
我使用Rails 4做了与上面相同的事情。但是我在devsie方法user_signed_in中收到错误Invalid strategy ldap_authenticable_custom ?在我看来。有任何想法吗? – 2016-08-24 03:36:48
@HP你解决了这个问题吗? – 2017-02-16 10:18:25