在你指责我问的问题太基本而没有做任何家庭作业(job)之前,我想说,我已经读了很多关于这些话题的书,但我仍然感到困惑.

我的需求似乎很简单.在我的公司,我们有很多Ruby on Rails应用程序.我想构建一个所有应用程序都应该使用的SSO身份验证服务.

为了研究如何做到这一点,我读了CASSAMLOAuth2.(我知道OAuth中的"Auth"代表授权,而不是身份验证,但我读了足够多的文章,说OAuth如何可以用于身份验证——this就是其中之一.)

有人能简单地告诉我这三个是什么吗?它们是替代品(竞争对手)吗?比较它们是对的吗?

有很多Ruby 似乎都在说非常相似的东西:

我只想要一个单独的Rails应用程序,它可以处理我的其他Rails应用程序的所有身份验证.

Note:我不想允许用户使用他们的Google/Facebook账户登录.我们的用户已经在我们的网站上拥有帐户.我希望他们能够使用该帐户登录一次,并且能够访问我们的所有应用程序,而无需再次登录.在任何应用中注销都应将其从所有应用中注销.

UPDATE

我遇到了以下两种OAuth解决方案:

他们似乎在描述与我想要的非常相似的东西.但我还没有找到任何指南/博客帖子/教程来展示如何使用SAML/CAS实现这一点.

欢迎提出建议.

UPDATE 2

关于我们用例的更多细节.

我们没有任何现有的SAML体系 struct .主要是我们的用户(直接在我们的网站上注册)将访问我们的所有应用程序.将来,我们可能会有第三方(合作伙伴)公司调用我们的API.我们还可能有来自这些第三方(合作伙伴)公司(在其网站上注册)的用户访问我们的应用程序.

推荐答案

如果你需要对LDAPActiveDirectory进行身份验证,那么上面提到的CAS个gem中的一个就适合你(RubyCAS,CASino).

如果你能负担得起,其中一家商业供应商(比如Okta)是你最好的 Select ,因为他们将掌握安全补丁,并为你管理身份验证需求.特别是,如果您必须支持ActiveDirectory,他们已经实现了它.

OAuth对于第三方身份验证最有用,尽管它可以执行SSO.所以,如果你想支持谷歌/Facebook登录或成为第三方认证者,那么这是一个不错的 Select .既然你不想支持Google/Facebook,那么OAuth可能不是你想要的.

如果你只打算使用HTTP POST来满足你的SSO需求,那么ruby-saml gem可能是你的 Select .你必须实现自己的Identity provider,并将service provider组件添加到所有网站(可能以gem的形式)您需要一个rails api作为您的应用程序.这gem有助于支持在rails中编写API.

EDIT

您提到future 的第三方用户可能会登录您的网站.这将改变你的演算,使你不再使用自己的ruby saml解决方案.

共享authentication API的最佳方式是实现OAuth层.Doorkeeper是一种流行的解决方案,并且正在迅速成为Rails身份验证的标准.它的社区支持、灵活性和易用性使其成为可消费身份验证API的最佳方式.

Railscast for implementing doorkeeper

Ruby-on-rails相关问答推荐

HTTP:MimeNegotiation::InvalidType(html不是有效的MIME类型):""

未捕获语法错误:try 编辑TRIX时,请求的模块未在Rails 7.1中提供名为默认的导出(在youtube.js:1:8)

一对多关联 counter_cache 在 Rails 中无法正确重新加载

Rails 'includes' 和 'where' 与 belongs_to 和 has_many 关联

您如何查看在 Rails 中触发回调的关联模型?

Ruby Sinatra Web 服务在 localhost:4567 上运行,但不在 IP 上

Rails Mailer Net::OpenTimeout: execution expired 仅在生产服务器上出现异常

控制器规格与请求规格?

在 Ruby on Rails 上,我们如何在控制器中打印调试信息?

如何将字符串转换为类方法?

我如何找出为什么我不能#destroy() 记录?

如何编写 Capybara 断言来判断按钮的存在及其启用或禁用状态?

使用 Rails 时,在 Ruby 中处理常量的最佳方法是什么?

Rails:带参数的 URL/路径

rails 获取应用程序根/基本 url

通过get in rails传递参数数组

从 Rails 控制器获取主机名

如何删除删除选项表单 activeAdmin?

我什么时候需要在 Rails 中重新启动服务器?

在控制台之外运行 Rails 命令