我正在使用'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