gpt4 book ai didi

security - 使用 CAS 或 OAuth 进行 SSO?

转载 作者:行者123 更新时间:2023-12-02 11:05:43 27 4
gpt4 key购买 nike

我想知道我是否应该使用CAS协议(protocol)或 OAuth + 一些用于单点登录的身份验证提供程序。

示例场景:

  1. 用户尝试访问 protected 资源,但未通过身份验证。
  2. 应用程序将用户重定向到 SSO 服务器。
  3. 如果通过身份验证,用户会从 SSO 服务器获取 token 。
  4. SSO 重定向到原始应用程序。
  5. 原始应用程序根据 SSO 服务器检查 token 。
  6. 如果 token 正常,将允许访问并且应用程序知道用户 ID。
  7. 用户执行注销并同时从所有连接的应用程序中注销(单点注销)。

据我了解,这正是 CAS 发明的目的。 CAS 客户端必须实现 CAS 协议(protocol)才能使用身份验证服务。现在我想知道在客户端(消费者)站点使用 CAS 或 OAuth。 OAuth 是否可以替代 CAS 的该部分? OAuth 作为新的事实标准是否应该被优先考虑?是否有一个易于使用(不是 Sun OpenSSO!)的 CAS 身份验证部分替代品,支持不同的方法,例如用户名/密码、OpenID、TLS 证书...?

上下文:

  • 不同的应用程序应依赖 SSO 服务器的身份验证,并应使用类似 session 的内容。
  • 应用程序可以是 GUI Web 应用程序或 (REST) 服务。
  • SSO 服务器必须提供用户 ID,这是从中央用户信息存储中获取有关用户的更多信息(例如角色、电子邮件等)所必需的。
  • 应该可以进行单点退出。
  • 大多数客户端都是用 Java 或 PHP 编写的。

我刚刚 discovered WRAP ,这可能成为 OAuth 的继任者。它是 Microsoft、Google 和 Yahoo 指定的新协议(protocol)。

附录

我了解到 OAuth 并不是为身份验证而设计的,即使它可以用于实现 SSO,但只能与 OpenID 等 SSO 服务一起使用。

在我看来,OpenID 是“新的 CAS”。 CAS 具有 OpenID 缺失的一些功能(例如单点登录),但在特定场景中添加缺失的部分应该不难。我认为OpenID有广泛的接受度,最好将OpenID集成到应用程序或应用服务器中。我知道CAS也支持OpenID,但我认为CAS对于OpenID来说是可有可无的。

最佳答案

OpenID 不是 CAS 的“继承者”或“替代品”,它们在意图和实现上都是不同的。

CAS 集中身份验证。如果您希望所有(可能是内部)应用程序要求用户登录到单个服务器(所有应用程序都配置为指向单个 CAS 服务器),请使用它。

OpenID 分散身份验证。如果您希望应用程序接受用户登录到他们想要的任何身份验证服务(用户提供 OpenID 服务器地址 - 事实上,“用户名”是服务器的 URL),请使用它。

以上都不处理授权(没有扩展和/或定制)。

OAuth 处理授权,但它不能替代传统的“USER_ROLES 表”(用户访问)。它处理第三方授权。

例如,您希望您的应用程序与 Twitter 集成:用户可以允许它在更新数据或发布新内容时自动发推文。您想要代表用户访问某些第三方服务或资源,而不获取他的密码(这对于用户来说显然是不安全的)。应用程序请求 Twitter 访问,用户授权(通过 Twitter),然后应用程序就可以访问。

因此,OAuth 与单点登录无关(也不是 CAS 协议(protocol)的替代品)。这与控制用户可以访问的内容无关。它是让用户控制第三方如何访问他们的资源。两种截然不同的用例。

根据您描述的情况,CAS 可能是正确的选择。

[已更新]

也就是说,如果您将用户身份视为安全资源,则可以使用 OAuth 实现 SSO。这基本上就是“使用 GitHub 注册”之类的功能。可能不是该协议(protocol)的初衷,但它是可以做到的。如果您控制 OAuth 服务器,并限制应用程序仅使用它进行身份验证,那就是 SSO。

不过,没有强制注销的标准方法(CAS 有此功能)。

关于security - 使用 CAS 或 OAuth 进行 SSO?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2033026/

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