为了实现SAML,我需要安装在主机上的Shibboleth SP吗?
-
26-10-2019 - |
题
我有几个SAML实施问题来清除我的困惑...
我需要在Java Web应用程序中实现SSO。
为此,我需要安装在主机上的Shibboleth SP 像这样, ,还是可以通过OpenSAML提供SP功能?
我假设Shibboleth的行为与OpenSAML相同,但仅在Web服务器级别上,而OpenSAML会在软件方面进行。那个假设正确吗?
编辑: 因此,Shibboleth(根据Scott Cantor的说法)是由Opensaml构建的...我的假设仍然存在吗?
使用OpenSAML需要什么?只是IDP URL和IDP注册?
我需要提供一个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选项。
- pingfederate https://www.pingidentity.com/ 好东西可以帮助您了解SAML和SSO。商业和许多公司使用。
- Josso All-Java http://www.josso.org/confluence/display/josso1/josso +-+ - +Java+popen+single+sign-on+on+project+home, ,LGPL 2.1或更高版本
- 拉索Java API关于本地实施。 http://lasso.entrouvert.org/ 双重许可(仅用于非商业用途)。
- OpenAM All-Java http://java.net/projects/opensso/, ,CDDL 1.0
- Shibboleth SP C ++, http://shibboleth.internet2.edu/, ,Apache许可证,版本2.0。
- OpenSAML库Java或C ++, https://wiki.shibboleth.net/confluence/display/opensaml/home/ Apache许可证,版本2.0。
- 已解决的Opensso(成为OpenAM)All-Java http://java.net/projects/opensso/, ,CDDL 1.0
- Shibboleth IDP All-Java这不是SP,而只是IDP,这对于测试您的SP很有用。
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。