5

我正在研究两个不同系统之间的单点登录选项:一个 .NET,一个 Java EE。它们各自独立管理,具有单独的用户管理,有一些重叠的用户。

我希望能够在不重新提示输入密码的情况下从一个链接到另一个。

SSO 产品和协议似乎有很多选择。我相当有信心我可以一次性编写代码来生成和验证我自己的安全令牌,但不希望重新发明轮子。

在方法和/或产品(最好是开源)方面,您会推荐什么?

首先,您会选择支持 SAML、OpenID、OAuth 还是以上都不支持的东西?

其次,在免费/开源产品中,我知道 OpenAM、Shibboleth、JOSSO 和 CAS。有什么经验可以和他们分享,好的、坏的或丑陋的?

4

2 回答 2

9

首先让我们看一下协议:

  1. SAML 2.0是一种集中式/分散式 SSO 协议。它是最先进的协议并提供联合,即您可以允许用户使用任何一个 X 系统登录,或通过单个系统(称为 IDP)引导所有用户。SAML 2.0 与一些主要的托管应用程序(例如 Google 应用程序和 Saleforce)一起广泛用于金融和政府部门。它也是最复杂的协议

  2. OpenID是一种去中心化协议,最适合 Internet,而不是 Intranet/Extranet 应用程序。用户可以选择从任何 OpenId 提供商登录。Stackoverflow 是 OpenId 的一个很好的例子——我们可以选择使用我们的 Google 或 Facebook 帐户登录。您可以通过强制消费应用程序(称为依赖方)和 SSO 系统(称为服务提供者)之间的默认关联以集中方式实现 OpenId。

  3. OAuth并不是真正的 SSO 协议。它允许用户授予应用程序 A 访问其在应用程序 B 中的信息的权限,而无需向应用程序 A 提供应用程序 B 的凭据。有些人使用 OAuth 作为伪身份验证的一种形式,即如果系统能够访问属于用户 X 的照片那么用户必须是 X。这是一个 hack,不推荐。

使用标准化协议以避免锁定绝对是一个好主意。Microsoft 最近引入了对 SAML 2.0 的支持,并且有许多可用于 Java 的开源和商业产品。有可用于 java 的 OpenId 实现,但我对 .NET 世界了解不足,无法发表评论。

As you mentioned there are a range of open source SAML products available (OpenAM, Shibboleth, JOSSO and CAS). One note of caution - SAML is a complex protocol so if you do go down the open source route you will need to be prepared for some hard work. When we built our Cloudseal SSO platform (SAML 2.0 based) we spent a lot of time trying to simplify things to abstract the complexity. Other commercial vendors have done the same but the open source products you mentioned are more focused on functionality rather than simplicity - IMHO! :)

于 2012-04-19T19:09:40.880 回答
0

You can use WorkOS https://workos.com/ to integrate SSO in your systems without having to re-implement SAML, OpenID, etc. from scratch

于 2021-11-05T20:30:54.440 回答