适用于noob的Rails身份验证策略

Gor*_*ter 6 authentication ruby-on-rails single-sign-on access-token omniauth

希望这不是太广泛,但经过大量的谷歌搜索,我不知道从哪里开始.我正在寻找介绍/ noob概述,以帮助我开始构建rails 3应用程序的身份验证实现.

基本技术要求:

  • Rails 3应用程序托管在第三方服务(heroku)上
  • 需要使用特定的外部私有SSO服务来验证用户.
  • rails应用程序中没有本地用户数据库或模型.
  • 身份验证是基于令牌的,这意味着需要读取一个特殊的cookie,将令牌传递回SSO服务器(而不是基于rails).
  • 我无法控制SSO服务器或基础架构.
  • SSO服务器的信任是隐式的,不希望维护用户,密码或敏感信息的本地数据库.用户信息仅在会话期间存在且SSO服务器具有权威性.
  • 会话令牌信息是基于cookie的,并且在浏览器会话期间存在.

我正在寻找基本的示例/教程/策略/解释,通过上述设置,该过程如何在rails中工作.我希望这个过程对于用户来说是无缝的,工作流基本上是这样的:


  • 导航到rails app - >
  • 将未经身份验证的用户重定向到SSO服务器 - >
  • 通过远程SSO服务器登录和验证 - >
  • 回调/重定向到rails app - >
  • 捕获从SSO服务器传回的用户信息,并在rails app中加载受保护的资源

策略是使用私有SSO资源完全自定义的,并且不使用良好发布的身份验证机制(换句话说,不是Facebook,Google,Twitter,OAuth等).

任何有关术语,连贯的教程,示例的帮助将不胜感激.

编辑/更新:

更具体地说,我也在寻找如何创建omniauth自定义开发人员策略的良好文档.一些教程介绍了与任意SSO服务器通信所需的代码类型,从cookie中读取令牌,以及完成身份验证握手和回调/重定向.

Ash*_*aka 1

这并不是一个真正的答案,但我发布这个是因为评论是行不通的。我不知道有什么全面的指南,所以我建议您这样做:

  1. 了解 Omniauth 的工作原理。有一个关于使用 Twitter 进行身份验证的很棒的Railscast。这真的很简单,它会让你顺其自然。

  2. 制定您自己的 Omniauth 策略。转至Omniauth 策略列表并滚动至开发人员策略。在该表中,选择可用于连接到 SSO 服务器的策略。

理想情况下,您能够使用 OAuth2,并且有一些指南讨论如何实现您自己的 OAuth 策略:

  1. 连接 Rdio 的自定义 OAuth 1.0 策略
  2. Intridea(Omniauth 的创建者)的自定义 OAuth 2.0 策略
  3. 通过 Heroku 连接到 Force.com 的自定义 OAuth 2.0 策略

但既然你不能,那就快速浏览一下这些指南吧。如果没有任何具体细节,(对我来说)很难提供更多帮助,但希望其他人能够填写详细信息。