2

在工作中,我们设置了一个运行 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,因为这些帐户特定于我们的系统,不能用于其他系统。

4

2 回答 2

0

你真的需要一个开放的 id 连接库。

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

于 2015-10-15T18:12:57.867 回答
0

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

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

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

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

于 2015-10-23T18:52:24.433 回答