为了实现SAML,我是否需要在主机上安装Shibboleth SP?
我收到了几个SAML实施问题,以解决我的困惑……
我需要在java Web应用程序中实现SSO。
-
为了做到这一点,我是否需要在我的主机上安装Shibboleth SP,或者我可以通过OpenSAML提供SPfunction吗?
-
我假设shibboleth与OpenSAML一样,但只是在Web服务器级别,而OpenSAML将在软件方面执行。 这个假设是否正确?
编辑:所以shibboleth(根据Scott Cantor)是用OpenSAML构建的……我的假设是否仍然存在?
-
使用OpenSAML需要什么? 只是IdPurl和idP注册?
-
我是否需要提供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选项。
- PingFederate https://www.pingidentity.com/ GOOD东西可以帮助您了解SAML和SSO。 商业和许多公司使用。
- JOSSO All-Java http://www.josso.org/confluence/display/JOSSO1/JOSSO+-+Java+Open+Single+Sign-On+Project+Home,LGPL 2.1或更高版本
- LASSO 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 License,Version 2.0。
- OpenSAML库Java或C ++, https: //wiki.shibboleth.net/confluence/display/OpenSAML/Home/Apache License,Version 2.0。
- 已解散的OpenSSO(成为OpenAM)全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,您还必须为自己的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。
- 如何在现有的tomcat Web应用程序上实现SSO
- 在执行器服务RabbitMQ中只有一个线程同时运行
- 带有transactionIdPrefix的DefaultKafkaProducerFactory会在引导服务器关闭时等待
- JFreeChart:将鼠标附近的鼠标坐标作为提示(鼠标移动时)
- 在Eclipse插件中打开文件到某一行
- java / spring-在org.springframework.context.support.AbstractApplicationContext中获取NoClassDefFoundError
- 如何在此表上执行添加操作?
- java中使用正则表达式进行字符串匹配
- JTextField特定格式检查