gpt4 book ai didi

ruby-on-rails - CAS、SAML 与 OAuth2

转载 作者:行者123 更新时间:2023-12-03 06:05:35 26 4
gpt4 key购买 nike

在你因为我没有做任何功课就问了太基本的问题而贬低我之前,我想说我已经阅读了大量关于这些主题的文章,但我仍然很困惑。

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

为了研究如何做到这一点,我阅读了有关 CASSAMLOAuth2 的内容。 (我知道 OAuth 中的“Auth”代表授权,而不是身份验证,但我读了足够多的文章,说明如何使用 OAuth 进行身份验证 - this 就是其中之一。)

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

而且有很多 gem ,它们似乎都在说非常相似的东西:

我只想要一个单独的 Rails 应用程序来处理其他 Rails 应用程序的所有身份验证。

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

更新

我遇到过这两个 OAuth 解决方案:

他们似乎描述了与我想要的非常相似的东西。但我还没有找到任何指南/博客文章/教程来展示如何使用 SAML/CAS 执行此操作。

欢迎提出建议。

更新2

有关我们用例的更多详细信息。

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

最佳答案

CAS 服务器:

独立的中央登录页面,用户可以在其中输入其凭据(即用户名和密码)。

CAS supports the standardized SAML 1.1 protocol primarily to support attribute release to clients and single sign-out.

(SQL 数据库、ActiveDirectory/LDAP、Google 帐户等中的表)完全兼容开放的多平台CAS协议(protocol)(CAS客户端实现了多种平台,包括PHP、各种Java框架、.NET、Zope等)多语言本地化——RubyCAS-Server自动检测用户的首选语言并呈现适当的界面。

enter image description here

SAML:安全断言标记语言是一种基于 XML 的开放标准数据格式,用于在各方之间(特别是身份提供商和服务提供商之间)交换身份验证和授权数据。SAML 授权是一个两步过程,您应该实现对这两个步骤的支持。

enter image description here

OAuth 2.0:

OAuth 2.0 授权框架支持第三方 应用程序获取对 HTTP 服务的有限访问,无论是 通过编排审批交互来代表资源所有者 资源所有者和 HTTP 服务之间,或者通过允许 第三方应用程序代表自己获取访问权限。

enter image description here

重要说明:

SAML 具有 OAuth2 缺少的一项功能:SAML token 包含用户身份信息(由于签名)。使用 OAuth2,您无法立即使用它,相反,资源服务器需要进行额外的往返以通过授权服务器验证 token 。

另一方面,使用OAuth2,您可以使授权服务器上的访问 token 失效,并禁止其进一步访问资源服务器。

这两种方法都有很好的功能,并且都适用于 SSO。我们已经用多种语言和各种应用程序证明了这两个概念。归根结底,OAuth2 似乎更适合我们的需求(因为没有现有的 SAML 基础设施可供利用)。

OAuth2 provides a simpler and more standardized solution which covers all of our current needs and avoids the use of workarounds for interoperability with native applications.

什么时候应该使用哪个?

1.如果您的用例涉及 SSO(当至少一个参与者或参与者是企业时),则使用 SAML

2.如果您的用例涉及提供对资源(例如帐户、图片、文件等)的访问(临时或永久),则使用OAuth

3.如果您需要向合作伙伴或客户应用程序提供对您门户的访问权限,请使用SAML

4.如果您的用例需要集中式身份源,请使用SAML(身份提供商)。

5.如果您的用例涉及移动设备,则使用某种形式的不记名 token 的 OAuth2 是合适的。

enter image description here

<强> Reference 1 , Reference 2 , Reference 3

关于ruby-on-rails - CAS、SAML 与 OAuth2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29053277/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com