我收到了几个SAML实施问题,以消除我的困惑......
我需要在java web应用程序中实现SSO。
为了做到这一点,我是否需要在主机like so上安装Shibboleth SP,或者我可以通过OpenSAML提供SP功能吗?
我假设shibboleth与OpenSAML一样,但只是在Web服务器级别,而OpenSAML将在软件方面执行。这个假设是否正确?
编辑:所以shibboleth(根据Scott Cantor所说)是使用OpenSAML构建的...... 虽然我的假设仍然存在吗?
使用OpenSAML需要什么?只是IdP网址和idP注册?
我是否需要提供SP目录,例如ActiveDirectory的/ LDAP?
编辑:感谢您的回答,但有人可以直接回答问题 以上并详细说明......
答案 0 :(得分:13)
更新以解决您的修改问题:
以下是您可以使用的一些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要求您使用已启用Shibboleth模块的和的Apache2,并且已安装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应用程序。< / p>
在任何一种情况下,您都需要与您的身份提供商交换您的SP元数据(使用Shibboleth SP软件包轻松创建),并在您的SP上获取身份提供商的元数据(也可以使用Shibboleth SP软件包轻松完成设置MetadataProvider)。
一旦您习惯使用,Shibboleth在线文档将为您提供很多帮助。
如果您可以使用Shibboleth SP软件包而不是使用OpenSAML库实现SAML 2 SSO解决方案,我认为您将获得更大的成功机会。我不能与其他所有Java SAML 2 SSO解决方案对话,但与简单的Shibboleth 2 SP相比,它们看起来都很大,而且过于企业化。
答案 1 :(得分: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中进行配置。
答案 2 :(得分:2)
您应该将这些问题发布到Shibboleth项目运行的相关邮件列表中。
OpenSAML是用于实现SAML解决方案的非常低级别的工具包,Shibboleth是支持SAML的Web应用程序的SSO包,恰好是使用OpenSAML构建的。构建安全解决方案很复杂,需要专业知识如果你没有这方面的专业知识,你就会做得不好,OpenSAML没有记录,以致典型的开发人员可以从头开始构建解决方案。
考虑使用完整的实现,无论是Shibboleth还是其他。如果你不能使用Apache和本机代码并且需要Java,那么你应该尝试一种现有的Java SP选项。即使它们不合适,你也应该以它们为基础而不是重复它们。
答案 3 :(得分:-3)
是的,您应该在服务器或机器中安装SP。它取决于您的网络服务器,例如IIS或Apache。