在工作中,我们设置了一个运行ThinkTecture IndentityServer SSO提供程序的系统,它目前为几个。net和ColdFusion站点提供身份验证。我目前正在开发一个我们用Ruby on Rails支持的新站点,并且很难弄清楚如何将它连接到SSO。(我对rails很陌生,但在CF和。net开发了很长时间)
我已经看过了omniauth-oauth2和oauth2宝石,但是我能找到的文档和解释中似乎缺少了重要的部分。如果我想使用Twitter, Facebook或类似的东西进行身份验证,有大量的信息,但我找不到任何针对任何通用OAuth2提供商的客户端解决方案。
我只是在找一个人给我指出正确的方向,找到我如何做到这一点的信息。我不关心它是特定于IdentityServer还是只是通用的,而不管提供者是什么。谢谢你的帮助。
Update:就像你知道的那样,我更愿意使用OAuth2进行此连接,但我不反对使用IdentityServer提供的任何其他方式,包括ADFS, WSFed或简单HTTP。但是我不能使用OpenID,因为这些帐户是特定于我们的系统的,不能用于其他系统。
您确实需要一个开放的id连接库。
http://openid.net/developers/libraries/总的来说,这是非常简单的。困难在于这个问题没有直接的答案。如何连接到IdentityServer完全取决于如何设置IdentityServer。
我不打算发布我的确切代码,因为这不会帮助任何人谁没有IdentityServer设置完全相同的方式我们做,因为我没有访问IdentityServer,我不能确切地说那是如何。不过,我将解释整个解决方案。
- 唯一需要的gem是JWT
- 从IdentityServer admin获取密钥代码(客户端id,密钥,签名密钥)
- 根据IdentityServer 的配置构建登录URL
- 将用户重定向到上一步生成的登录路径
- 从IdentityServer接收回令牌
- 使用JWT.decode函数进行解码和验证
从那里你只是有一个JSON字符串与你的数据。