【问题标题】:Rails authentication strategy菜鸟的Rails身份验证策略
【发布时间】:2013-01-01 11:50:51
【问题描述】:

希望这不是太宽泛,但经过大量谷歌搜索后,我不确定从哪里开始。我正在寻找介绍性/新手概述,以帮助我开始为 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 等)。

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

编辑/更新:

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

【问题讨论】:

    标签: ruby-on-rails authentication single-sign-on omniauth access-token


    【解决方案1】:

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

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

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

    理想情况下,您应该能够使用 OAuth2,并且有几个指南讨论了如何实施您自己的 OAuth 策略:

    1. Custom OAuth 1.0 strategy to connect to Rdio
    2. Custom OAuth 2.0 strategy by Intridea (the creators of Omniauth)
    3. Custom OAuth 2.0 strategy to connect to Force.com by Heroku

    但既然您不能,请快速浏览一下这些指南。没有任何细节,(对我而言)很难提供更多帮助,但希望其他人会填写详细信息。

    【讨论】:

    • 感谢您的链接。我一直在这样做,更多地了解omniauth。问题是我必须构建一些相当定制的东西。没有可用的策略与我必须操作的环境完美匹配。特别是我正在寻找一些示例来解释如何从 cookie 中读取令牌并将其发送回 SSO 服务器。不幸的是,我正在使用一个未记录的 API。所以它有点像一个黑匣子。啊!
    猜你喜欢
    • 2020-07-03
    • 2019-06-12
    • 2017-05-20
    • 2019-03-23
    • 1970-01-01
    • 2019-12-14
    • 2019-04-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多