【问题标题】:Keep getting Cross-Site Request Forgery error using Ueberauth使用 Ueberauth 不断收到 Cross-Site Request Forgery 错误
【发布时间】:2021-08-06 21:58:06
【问题描述】:

我使用的是 Phoenix 1.3 版和 UeberAuth "~> 0.6"。我目前收到一个我认为不应该发生的 CRSF 错误,但我很可能会出错。

在我的 router.ex 文件中,我有以下内容:

scope "/auth", DiscussWeb do
    pipe_through :browser
    get "/:provider", AuthController, :request
    get "/:provider/callback", AuthController, :callback
end

在我的控制器文件中,回调如下:

def callback(conn, params) do
    callback_t(conn, params)
    conn
    |> put_flash(:info, "Github Authenticate?")
    |> redirect(to: Routes.topic_path(conn, :index))
end

defp callback_t(conn, params) do
    IO.puts "+++"
    IO.inspect(conn.assigns)
    IO.puts "+++"
    IO.inspect(params)
    IO.puts "+++"
end

在浏览器中,我确实被重定向到 GitHub 进行登录。但是,我得到以下响应:

debug] Processing with DiscussWeb.AuthController.callback/2
  Parameters: %{"code" => "908a69a812c17af0ab0b", "provider" => "github"}
  Pipelines: [:browser]
+++
%{
  ueberauth_failure: %Ueberauth.Failure{
    errors: [
      %Ueberauth.Failure.Error{
        message: "Cross-Site Request Forgery attack",
        message_key: :csrf_attack
      }
    ],
    provider: :github,
    strategy: Ueberauth.Strategy.Github
  }
}
+++
%{"code" => "908a69a812c17af0ab0b", "provider" => "github"}
+++
[info] Sent 302 in 4ms
[info] GET /

这是预期的吗?看起来我实际上已经登录了,因为如果我在浏览器中尝试同样的事情,我不必登录到 GitHub。但是,还有一个 CRSF 失败,我不确定如何处理,也无法从 conn.assigns 变量中获取我需要的信息。

任何帮助或建议将不胜感激!

【问题讨论】:

  • 我和你面临同样的问题,100% 相同。因此,我尝试使用 Google API 进行 OAuth,并且成功了。我创建了开发帐户,我得到了重定向并且没有 CSRF 问题。所以我认为 GitHub 配置有一些东西。至于 Github,我尝试添加策略 github: {Ueberauth.Strategy.Github, [ignores_csrf_attack: true]} 但没有帮助。我也尝试设置 POST 而不是 GET 但再次没有运气。将此 repo 作为测试区域,看看它是如何工作的 Überauth Example。希望它有点帮助。如果我找到 Github 的修复程序,我会回来的。干杯!

标签: elixir phoenix ueberauth


【解决方案1】:

将 mix.exs 文件中的 ueberauth_github 更新为 最新 版本,如 {:ueberauth_github, "~> 0.8"},然后运行 ​​mix.deps update(您可以使用 mix.deps clean 重新开始)。在此之后,我通过 Github 进行了身份验证,没有任何问题或其他策略。在找到解决方案之前,我在对您的问题留下的评论中使用了该应用程序。

【讨论】:

  • 出于某种原因,我什至没有 0.8 工作,但目前仍未发布的 0.8.1 工作。所以{:ueberauth_github, github: "ueberauth/ueberauth_github", branch: "master"}
猜你喜欢
  • 2011-02-01
  • 2019-04-20
  • 2017-11-21
  • 2018-06-22
  • 2020-11-18
  • 2020-08-02
  • 2015-05-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多