我有几个SAML实施问题来清除我的困惑...

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

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

  2. 我假设Shibboleth的行为与OpenSAML相同,但仅在Web服务器级别上,而OpenSAML会在软件方面进行。那个假设正确吗?

编辑: 因此,Shibboleth(根据Scott Cantor的说法)是由Opensaml构建的...我的假设仍然存在吗?

  1. 使用OpenSAML需要什么?只是IDP URL和IDP注册?

  2. 我需要提供一个SP目录,例如ActiveIveRectory/LDAP吗?

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

有帮助吗?

解决方案

使用OpenSAML需要什么?只是IDP URL和IDP注册?

您需要Java和Web容器,并在战争中包括OpenSAML库。

您需要在本地缓存IDP元数据,或者在要发送authnrequest或Process samlresponse时每次查找。另外,您还必须在IDP侧注册SP元数据。

如果您使用shibboleth作为IDP,则应在conf/依赖party.xml文件中设置SP元数据。

我需要提供一个SP目录,例如ActiveIveRectory/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,您也必须手工生成一个XML文件作为自己的元数据。如下所述,这将是很多工作。 SAML 2.0产品将为您生成该XML元数据文件,并生成用于加密和签名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 Server与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,则还会增加网络应用程序的大小。值得注意的是,Shibboleth SP不是用Java编写的,因此您将不会使用OpenSAML来使用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的SSO软件包,恰好使用OpenSAML构建。建立安全解决方案很复杂,需要专业知识。如果您没有这种专业知识,您将做得不好,并且没有记录OpenSAML,因此典型的开发人员可以从头开始构建解决方案。

考虑使用完整的实现,无论是shibboleth还是其他。如果您不能使用Apache和本机代码,并且需要Java,则应尝试使用存在的现存Java SP选项之一。即使它们不足,您也应该以它们为基础,而不是复制它们。

是的,您应该在服务器或计算机中安装SP。这将取决于您的Web服务器,例如IIS或Apache。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top