7

我有几个 SAML 实施问题来解决我的困惑......

我需要在 Java Web 应用程序中实现 SSO。

  1. 为此,我是否需要像这样在我的主机上安装 Shibboleth SP ,还是可以通过 OpenSAML 提供 SP 功能?

  2. 我假设 shibboleth 和 OpenSAML 做的一样,但只是在网络服务器级别,而 OpenSAML 将在软件方面做。这个假设正确吗?

编辑:所以 shibboleth(根据 Scott Cantor 的说法)是用 OpenSAML 构建的……我的假设仍然成立吗?

  1. 使用 OpenSAML 需要什么?只是 IdP 网址和在 idP 的注册?

  2. 我是否需要提供一个 SP 目录,例如 ActiveDirectory/LDAP?

编辑:感谢您的回答,但有人可以直接回答上述问题并详细说明......

4

4 回答 4

14

更新以解决您的编辑:

以下是您可以使用的一些 SAML 2 选项。

Shibboleth SP 是为您实现 SAML 2.0 的产品,但 OpenSAML 只是一个,您可以使用它来实现 SAML 2.0 解决方案。该库本身是低级的,甚至还没有成为 SSO 解决方案。OpenSAML 本身并不是 SAML 2.0 解决方案。

要使用 OpenSAML 或任何SAML 2.0 解决方案,您需要交换元数据,如下所述。使用 OpenSAML,您还必须为自己的元数据手动生成 XML 文件。如下所述,这将是很多工作。SAML 2.0 产品将为您生成 XML 元数据文件,并生成用于加密和签署 SAML 2.0 断言的所需 RSA 密钥。使用 OpenSAML,您将获得用于加载部分 XML 文件的 API 支持以及用于生成和解析断言的 API,但您将编写实际构建 SSO 交互的 Java 代码。

SP不一定需要 ActiveDirectory/LDAP,但您需要在 Web 应用程序中使用某种类型的目录来跟踪用户。如果您的 Web 应用程序已经有了用户概念以及一些可用于将其与 IdP 的用户概念相关联的识别信息,您可以根据 SAML 2.0 断言中的属性值将这些信息映射到您的 Web 应用程序中。(如果您的 Web 应用程序不关心用户是谁,那么您可以简单地根据用户“有效”来允许访问该应用程序。)

--

将 Shibboleth2 SSO 与 Java Web 应用程序集成并不太难。使用 OpenSAML 来实现 SSO 是可行的,但它比将 Apache 服务器与 Shibboleth 集成要多得多。

使用 Shibboleth 要求您拥有启用了 Shibboleth 模块的 Apache2并且安装了 Shibboleth SP 守护程序。通常,它们会放在同一个盒子上。如果您使用 Tomcat 来托管 Java Web 应用程序,那么我建议您使用 mod_proxy_ajp 在 Apache2 HTTP 服务器和 Tomcat 之间进行通信。这样,您可以将 Shibolleth 提供的变量作为 servlet 请求属性。(您必须在 shibboleth2.xml 中将变量前缀设置为“AJP_”。)

Shibboleth SP 包已经处理了您可能会遇到的所有标准 SAML SSO 场景,但是尝试在 Java 应用程序中直接使用 OpenSAML 实现其中的一种场景,无论是使其正常工作还是使其安全都充满了危险. 如果您使用 OpenSAML,您还将增加 Web 应用程序的大小。值得注意的是,Shibboleth SP 不是用 Java 编写的,因此您不会有使用 OpenSAML 的示例,但您可以通过查看 Shibboleth IdP 代码(一个 Java Web 应用程序)获得一些见解。

在任何一种情况下,您都需要与您的身份提供者交换您的 SP 元数据(使用 Shibboleth SP 包轻松创建),并在您的 SP 上获取身份提供者的元数据(也很容易使用 Shibboleth SP 包,因为您只需设置一个元数据提供者)。

一旦您习惯了使用 Shibboleth 在线文档,它将对您有很大帮助。

如果您可以使用 Shibboleth SP 包而不是使用 OpenSAML 库实现 SAML 2 SSO 解决方案,我认为您将有更大的成功机会。我无法谈论其他全 Java SAML 2 SSO 解决方案,但与简单的 Shibboleth 2 SP 相比,它们看起来都很大而且过于企业化。

于 2012-01-10T21:41:29.580 回答
3

使用 OpenSAML 需要什么?只是 IdP 网址和在 idP 的注册?

您需要 Java 和 Web 容器,并在您的战争中包含 opensaml 库。

您需要在本地缓存 IdP 元数据或每次要发送 AuthnRequest 或处理 SAMLResponse 时查找它。您还必须在 IdP 端注册您的 SP 元数据。

如果您使用 Shibboleth 作为您的 IdP,则应在 conf/relying-party.xml 文件中设置 SP 元数据。

我是否需要提供一个 SP 目录,例如 ActiveDirectory/LDAP?

为了登录 IdP,您需要在 IdP 端设置 ldap 或数据库服务器,并在 conf/attribute-resolver.xml 和 conf/login.config 中进行配置。

于 2012-02-08T20:53:26.037 回答
2

您应该将此类问题发布到 Shibboleth 项目运行的相关邮件列表。

OpenSAML 是一个用于实现 SAML 解决方案的非常底层的工具包,Shibboleth 是一个 SSO 包,用于支持 SAML 的 Web 应用程序,它恰好是用 OpenSAML 构建的。构建安全解决方案很复杂,需要专业知识。如果您不具备这种专业知识,那么您的工作就会很糟糕,而且 OpenSAML 没有记录在案,因此典型的开发人员可以从头开始构建解决方案。

考虑使用完整的实现,无论是 Shibboleth 还是其他。如果您不能使用 Apache 和本机代码并且需要 Java,那么您应该尝试现有的 Java SP 选项之一。即使它们不充分,您也应该在它们的基础上进行构建,而不是重复它们。

于 2012-01-10T21:15:26.403 回答
-3

是的,您应该在您的服务器或机器上安装 SP。这取决于您的网络服务器,例如 IIS 或 Apache。

于 2014-06-01T13:50:26.443 回答