【问题标题】:How to disable discovery and specify OpenID server for omniauth-openid如何禁用发现并为 omniauth-openid 指定 OpenID 服务器
【发布时间】:2012-08-10 14:21:46
【问题描述】:

我正在尝试在 Ruby on Rails 中使用 Google Apps 执行 OmniAuth OpenID。我知道如果我指定 ":identifier => 'https://www.google.com/accounts/o8/site-xrds?hd=example.com'" 其中 example.com 它应该开箱即用是我的目标用户来自的域。

用户在访问 /auth/google 时可以毫无问题地被重定向到谷歌,并且这个 openid.identity 可以从谷歌返回:

... &openid.identity=http://example.com/openid?id=xxxxxxxxxxxxxxxxxxxxxxx ...

但是,我正在使用的 example.com 没有在http://example.com/ 设置正确的“rel='openid2.provider'” 标签,因此当omniauth-openid 尝试检查时发现失败再次与 Google 合作。

是否有一种快速而干净的方法来解决默认发现行为,以便我可以直接将https://www.google.com/a/example.com/o8/ud?be=o8 定义为服务器而不执行自动发现?

谢谢!

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 openid omniauth google-openid


    【解决方案1】:

    我认为omniauth-openid 使用ruby-openid。如果是这样,您应该能够轻松地使其工作:

    gem install ruby-openid-apps-discovery
    

    然后在发出请求之前在某个地方抛出

    require 'gapps_openid'
    

    Google Apps 的发现协议略有不同,这正是 gem 提供的。

    【讨论】:

    • 谢谢!这正是我想要的。
    【解决方案2】:

    在使用史蒂夫推荐的 gem 之前,我想出了一个解决方法,让整个发现过程仅在本地发生,我发现这可能对某些人有用。如果您只接受来自单个 Google Apps 域的用户,您可能希望:

    1. 在 /etc/hosts 中添加类似 127.0.0.1 example.com 的行。

    2. 1234563 /p>

    这比使用 ruby​​-openid-apps-discovery 稍微快一些,因为它可以避免您的应用程序向外部 https 服务器发送一些请求。

    【讨论】:

      猜你喜欢
      • 2021-11-13
      • 1970-01-01
      • 1970-01-01
      • 2015-04-29
      • 1970-01-01
      • 1970-01-01
      • 2010-09-27
      • 1970-01-01
      • 2017-11-20
      相关资源
      最近更新 更多