6

希望这不是太宽泛,但经过大量谷歌搜索后,我不确定从哪里开始。我正在寻找介绍性/新手概述,以帮助我开始为 rails 3 应用程序构建身份验证实现。

基本技术要求:

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

我正在寻找基本示例/教程/策略/解释该过程如何在上述设置的 Rails 中工作。我希望该过程对于用户来说是无缝的,其工作流基本上如下所示:


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

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

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

编辑/更新:

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

4

1 回答 1

1

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

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

  2. 构建您自己的 Omniauth 策略。转到Omniauth Strategies列表并滚动到Developer Strategies。在该表中,选择可用于连接 SSO 服务器的策略。

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

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

但既然你不能,只需快速浏览一下这些指南。没有任何细节,(对我来说)很难提供更多帮助,但希望其他人会填写细节。

于 2013-01-19T00:17:24.110 回答