为了实现SAML,我是否需要在主机上安装Shibboleth SP?

我收到了几个SAML实施问题,以解决我的困惑……

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

  1. 为了做到这一点,我是否需要在我的主机上安装Shibboleth SP,或者我可以通过OpenSAML提供SPfunction吗?

  2. 我假设shibboleth与OpenSAML一样,但只是在Web服务器级别,而OpenSAML将在软件方面执行。 这个假设是否正确?

编辑:所以shibboleth(根据Scott Cantor)是用OpenSAML构建的……我的假设是否仍然存在?

  1. 使用OpenSAML需要什么? 只是IdPurl和idP注册?

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

编辑:谢谢你的答案,但有人可以直接回答上面的问题并详细阐述它们……

使用OpenSAML需要什么? 只是IdPurl和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中进行配置。

更新以解决您的修改:

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

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

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

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

将Shibboleth2 SSO与Java Web应用程序集成并不是很困难。 使用OpenSAML实现SSO会起作用,但与将Apache服务器与Shibboleth集成相比,要付出更多的努力。

使用Shibboleth要求您启用Apache2并启用Shibboleth模块, 并且安装了Shibboleth SP守护程序。 通常,这些将在同一个盒子上。 如果您使用Tomcat来托管Java Web应用程序,那么我建议您使用mod_proxy_ajp在Apache2 HTTP服务器和Tomcat之间进行通信。 这样你可以将Shibolleth提供的变量作为servlet Request属性。 (您必须在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包,也很容易) MetadataProvider)。

一旦您习惯使用它,Shibboleth在线文档将为您提供很多帮助。

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

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

OpenSAML是用于实现SAML解决方案的非常低级别的工具包,Shibboleth是支持SAML的Web应用程序的SSO包,恰好是使用OpenSAML构建的。 构建安全解决方案很复杂,需要专业知识 如果您没有这方面的专业知识,那么您的工作就会做得不好,并且没有记录OpenSAML,以便典型的开发人员可以从头开始构建解决方案。

考虑使用完整的实现,无论是Shibboleth还是其他。 如果你不能使用Apache和本机代码并且需要Java,那么你应该尝试一种现有的Java SP选项。 即使它们不合适,你也应该以它们为基础而不是重复它们。

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