我正在使用'omniauth-openid'gem来实现OpenID登录。在我OmniAuth回调方法,我做这样的事情(它的简化,但传达了重要的信息):如何使用omniauth-openid gem secure使OpenID登录?
def google
oauth = request.env['omniauth.auth']
if @user = User.find_by_email(oauth.info.email)
sign_in(@user) and redirect_to '/dashboard'
end
end
这实际上是一样的东西在GitHub上OmniAuth文档显示你做的;但我觉得这是非常不安全的。攻击者需要做的就是手动更改回调URL中的info.email参数,并且可以像其他任何用户一样登录。
这是OmniAuth的根本缺陷吗?或者有什么方法可以确认传递给OmniAuth回调方法的参数是由OpenID提供商真正发送的,而不是由坏人修改的?
我不知道一个事实,但我很确定OmniAuth在幕后做了很多工作。我认为你的问题更多的是关于OpenID协议是否安全。 – Andrew 2012-10-24 22:35:16