Rails 身份验证策略

2024-02-13

希望这不是太宽泛,但经过大量谷歌搜索后,我不知道从哪里开始。我正在寻找介绍性/新手概述来帮助我开始为 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 中读取令牌以及完成身份验证握手和回调/重定向所需的代码。


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

  1. 了解 Omniauth 的工作原理。有一个很棒的铁路广播公司 http://railscasts.com/episodes/241-simple-omniauth关于使用 Twitter 进行身份验证。这真的很简单,它会让你顺其自然。

  2. 制定您自己的 Omniauth 策略。转到列表Omniauth 策略 https://github.com/intridea/omniauth/wiki/List-of-Strategies并滚动到开发者策略。在该表中,选择可用于连接到 SSO 服务器的策略。

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

  1. 连接 Rdio 的自定义 OAuth 1.0 策略 http://anti-pattern.com/adding-a-new-strategy-to-omniauth
  2. Intridea(Omniauth 的创建者)的自定义 OAuth 2.0 策略 https://github.com/intridea/omniauth-oauth2#creating-an-oauth2-strategy
  3. 通过 Heroku 连接到 Force.com 的自定义 OAuth 2.0 策略 https://devcenter.heroku.com/articles/omniauth-and-force-com

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rails 身份验证策略 的相关文章

  • S3 的 Rails 回形针默认图像

    我尝试在应用程序中使用default url 但我使用S3 存储图像 我不确定我需要在那里输入什么 URL 或者我是否必须创建一个假图像才能将所有内容放在那里 由于我的图像总是通过 S3 渲染 所以我不知道如果我只是在公共文件夹中放入一些默
  • Rails 2.3.14:如何序列化 ActionController::Request 对象?

    我需要编写一些根据 Rails 2 3 14 控制器收到的请求对象类型执行操作的方法 但是 我不想启动整个应用程序 甚至不想启动控制器 我只想拥有这样一个对象的编组副本 以便我可以在 Rails 环境之外使用 不幸的是 ActionCont
  • Rails 3:用户创建自定义表单?

    我正在尝试思考如何允许用户创建具有所有字段类型的自定义表单 如果有一颗宝石那就太好了 但我似乎无法在任何地方找到它 所以我有一个像这样的数据库设置 t integer form id t string name t string hint
  • ActiveRecord 查询,按关联排序,最后一个 has_many

    我试图列出所有Users by the created at最近创建的关联记录 通讯 列 到目前为止我所拥有的 User includes communications order communications created at IS
  • 如何在保存父对象时确保子对象有效?

    假设我有两堂课 class User attr accessible name has one address validates name presence gt true validates associated address end
  • 如何制作像 Facebook 应用程序一样的登录屏幕?

    如何制作像 Facebook 应用程序一样带有 电子邮件 和 密码 文本字段的登录屏幕 Facebook登入 http extdesenv com wp content uploads 2012 05 facebook login ios
  • Capistrano 部署擦除数据库?

    我已成功使用 Capistrano 将我的应用程序部署到生产环境 但我不明白如何处理我的数据库 我正在使用颠覆和乘客 当我运行 cap 部署时 新部署会重新启动一切 它会清除添加到数据库中的数据 显然 必须有一个解决方案 但我很惊讶没有在网
  • postgres 数组字段上的 ActiveAdmin 过滤器

    我在 ActiveAdmin 中添加了以下过滤器 filter roles as select collection Model ROLES multiple true 但是当我选择过滤器值来搜索角色时 它给了我以下错误 PG Invali
  • 使用 Ruby on Rails 索引多列

    我在 Mysql 数据库中有一个表 我想在其上使用多列索引 如何在不使用 mysql 控制台的情况下在 Rails 中执行此操作 在迁移定义中 您可以这样做 add index table name column1 column2
  • Cucumber 是否不需要编写单元测试?

    我对 Ruby ROR 可用的测试框架数量之多感到有点困惑 我最近看了黄瓜轨道广播 http railscasts com episodes search cucumber并发现它们非常有趣 所以我开始玩游戏 然后努力从概念上考虑在哪里进行
  • 设计重定向到成功登录似乎在第一次登录尝试时卡住

    我正在使用 Ruby on Rails 开发一个小型应用程序 并使用 Devise 进行身份验证 我有两个登录系统设置 一个是user另一个是employee 当使用正确的电子邮件和密码登录时 设计会发送正确的重定向到返回路径 但它会卡在那
  • 在 ASP.NET MVC 中使用 MySQL 的 AccountController

    在 Visual Studio 中创建默认的 ASP NET MVC 项目会设置一个可以在其中注册用户的基本项目 我将如何继续更改它以使用 MySQL 服务器而不是 SQLServer 现在可以使用了 安装最新的 Connector NET
  • Rails 5 - 在 gem 上充当 Taggable - 简单表单集合选择已定义的标签列表

    我正在尝试学习如何将 Acts as Taggable On gem 与 Rails 5 一起使用 我使用简单的表格作为表格 我认为部分问题是由于提案和 randd fields 之间的模型没有关联而产生的 我有名为 Proposal 和
  • 为 Ruby On Rails 环境创建 Docker 映像时出错(从 Dockerfile)

    估计是环境问题 当我手动执行此操作 没有 Dockerfile 时 它可以工作 这是我的 Dockerfile FROM ubuntu 14 04 RUN apt get update RUN apt get upgrade assume
  • Ruby on Rails 和来自 PSP 的奇怪 HTTP_ACCEPT 标头

    我有 Ruby on Rails 应用程序 3 1rc4 并且每天使用相同的用户代理 Mozilla 4 0 PSP PlayStation Portable 2 00 都会不断遇到一些异常 例外 A ActionView MissingT
  • 使用 OWIN 自托管 WebApi 进行声明身份验证

    我使用以下配置自托管 WebApi Visual Studio 2012 NET 4 0 public void Configuration IAppBuilder appBuilder var config new HttpConfigu
  • 默认更新嵌套属性

    我尝试更新 iProduction 这是生产中的嵌套表单 但此行出现参数错误 参数数量错误 0 代表 1 生产 update iproducts attributes cow id cow 我的创作动作制作 def create produ
  • 防火墙后面的 Web 应用程序上的 OAuth——这可能吗?

    我正在尝试构建一个网络应用程序来将事件添加到员工的谷歌日历中 并希望使用 OAuth 进行身份验证 但是 我的 Web 应用程序被迫位于防火墙后面的 Intranet 上 服务器具有出站 Internet 访问权限 但如果您不在 Intra
  • 我可以从安装 Rails 引擎的真实应用程序运行它的规格吗?

    我有一个 Rails 引擎 旨在为我们的一个更大的项目提供一些模型和控制器 引擎有一套相当不错的规格 在引擎的虚拟应用程序中使用了一堆模拟和一些全尺寸模型和控制器 以确保引擎正在做它应该做的事情并与更大的应用程序一起工作 然而 即使所有测试
  • simple_fields_for 没有出现 [rails 4]

    我正在尝试创建两个隐藏字段 其中一个显示没有问题 但来自嵌套表单的另一个则没有 产品 rb class Product lt ActiveRecord Base has many product options dependent dest

随机推荐