gpt4 book ai didi

ruby-on-rails - OmniAuth 单点登录与设计,invalid_credentials

转载 作者:行者123 更新时间:2023-12-04 03:49:59 28 4
gpt4 key购买 nike

我有 3 个网络应用程序 - A、B 和 C。应用程序 A 包含用户数据库。如果访问 App B 和 App C,我希望用户被重定向到 App A 进行身份验证,然后返回到他们尝试访问的任何应用程序。同时,他们应该登录所有应用程序。除非有人有更好的解决方案,否则我采用了 this blog post 中所述的 OmniAuth/Devise 组合解决方案。 .

我已经 fork 并更新到 Rais 3.1.2 一个示例应用程序 A 和一个示例应用程序 B/C。

应用程序 A - 提供者 - https://github.com/RobZolkos/sso-devise-omniauth-provider

应用 B/C - 客户端 - https://github.com/RobZolkos/sso-devise-omniauth-client

这些示例应用程序工作,我被重定向到提供程序应用程序进行身份验证,但它似乎没有进行身份验证。我附上了日志 here .提供程序似乎通过了 Action ,但是在日志的第 26 行您可以看到似乎存在身份验证问题。

我是否缺少使这些示例应用程序工作的简单方法?

最佳答案

我发现了两个问题:

  • 由于 0.2.1 版本 omniauth 已将身份验证参数名称从 access_token 更改为至 oauth_token在获取访问权限时(POST/oauth/token 请求)。
  • 从 0.3.0 版本开始 omniauth 更改了传递方法 oauth_token在身份验证请求 (GET/auth/josh_id/user.json) 中。之前的 0.3.0 token 已通过请求参数 oauth_token 传递,但从 0.3.0 开始,它通过 HTTP_AUTHORIZATION header 传递。

  • 我不知道如何很好地从 header 中获取 token (我认为它可以通过设计获取),所以我丑陋的黑客客户端通过这样的 GET 参数发送 oauth_token(在 lib/josh_id.rb 中):

    def raw_info
    @raw_info ||= access_token.get("/auth/josh_id/user.json?oauth_token=#{access_token.token}").parsed
    end

    您可以在我们的 github 存储库中找到完全可行的代码:
  • https://github.com/openteam/sso-devise-omniauth-client
  • https://github.com/openteam/sso-devise-omniauth-provider
  • 关于ruby-on-rails - OmniAuth 单点登录与设计,invalid_credentials,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8205927/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com