【问题标题】:How to Connect Rails Client to IndentityServer SSO provider如何将 Rails 客户端连接到 IndentityServer SSO 提供程序
【发布时间】:2015-10-15 14:26:19
【问题描述】:

在工作中,我们设置了一个运行 ThinkTecture IndentityServer SSO 提供程序的系统,该提供程序目前为多个 .NET 和 ColdFusion 站点提供身份验证。我目前正在开发一个我们在 Ruby on Rails 中支持的新站点,并且很难弄清楚如何将它连接到 SSO。 (我对 Rails 很陌生,但长期从事 CF 和 .NET 开发)

我查看了 omniauth-oauth2 和 oauth2 gems,但我可以找到的文档和解释中似乎缺少重要部分。如果我想使用 Twitter、Facebook 或类似的东西进行身份验证,有大量信息,但我找不到任何只针对任何通用 OAuth2 提供程序的客户端的信息。

我只是在寻找可以为我指明正确方向的人,以查找有关如何执行此操作的信息。我不在乎它是特定于 IdentityServer 的,还是只是通用的,不管提供者如何。感谢您的帮助。

更新:您知道,我更喜欢使用 OAuth2 进行此连接,但我不反对使用 IdentityServer 提供的任何其他方式,包括 ADFS、WSFed 或 Simple HTTP .不过,我不能使用 OpenID,因为这些帐户是我们系统特有的,不能用于其他系统。

【问题讨论】:

  • 我正在使用 oauth2 gem 在这方面取得进展,一旦我可以确认,我将发布解决方案。
  • 嗨!我有兴趣,我也有同样的问题。您是否成功实施了 omniauth ?你能分享一下你是怎么做到的吗?

标签: ruby-on-rails-4 oauth-2.0 adfs ws-federation identityserver2


【解决方案1】:

您确实需要一个开放的 id 连接库。

http://openid.net/developers/libraries/

【讨论】:

  • 这看起来很有可能。现在寻找如何在 Rails 中实现 gem。如果我能发现它可能会起作用。
  • 其实看起来OpenID是它自己的认证系统。这些用户在我们的系统上拥有未连接到 OpenID 的帐户。我们需要他们向我们的服务器验证该服务器上存在的帐户。
【解决方案2】:

事实证明,总的来说,这很容易。困难在于这个问题没有直接的答案。如何连接到 IdentityServer 完全取决于 IdentityServer 的设置方式。

我不会发布我的确切代码,因为这不会帮助没有像我们一样设置 IdentityServer 的任何人,而且由于我无权访问 IdentityServer,所以我可以' t确切地说那是怎么回事。不过,我将解释整体解决方案。

  1. 唯一需要的宝石就是 JWT
  2. 从 IdentityServer 管理员处获取密钥代码(客户端 ID、密钥、签名密钥)
  3. 根据 IdentityServer 的配置构建登录 URL
  4. 将用户重定向到上一步生成的登录路径
  5. 从 IdentityServer 接收令牌
  6. 使用 JWT.decode 函数进行解码和验证

从那里你只有一个带有数据的 JSON 字符串。

【讨论】:

    猜你喜欢
    • 2017-11-27
    • 1970-01-01
    • 2019-03-04
    • 1970-01-01
    • 2011-05-05
    • 2011-04-12
    • 2021-05-27
    • 1970-01-01
    • 2011-05-18
    相关资源
    最近更新 更多