2012-01-10 56 views
6

我得到了几个SAML实施问题来清除我的困惑...为了实现SAML,我需要在我的主机上安装Shibboleth SP吗?

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

  1. 为了做到这一点,我需要我的主机like so上安装Shibboleth的SP,或者我可以提供通过OpenSAML SP的功能?

  2. 我假设shibboleth和OpenSAML一样,但只是在Web服务器级别上,而OpenSAML会在软件端做到这一点。这个假设是否正确?

编辑:所以陈词滥调(根据斯科特·康托)是建立与OpenSAML ... 没有我的假设仍持有,但?

  1. 真正所需要使用OpenSAML?只是IdP的网址和注册与IDP?

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

编辑:谢谢你的答案,但有人可以直接回答问题 以上,并阐述他们...

回答

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中。

1

你应该张贴这样的问题,相关的邮件列表由Shibboleth项目运行。

OpenSAML是实现SAML解决方案的一个非常低的水平的工具包,Shibboleth的是SSO封装为Web应用程序支持SAML恰好与OpenSAML建造。构建安全解决方案很复杂,需要专业知识如果你不具备这些专业知识,你会做它的一个糟糕的工作,并OpenSAML未记录这样一个典型的开发人员可以从头开始构建的解决方案。

考虑使用一个完整的实现,无论是Shibboleth的或别的东西。如果您不能使用Apache和本机代码并且需要Java,那么您应该尝试存在的现有Java SP选项之一。即使它们不足,你也应该建立在它们之上,而不是重复它们。

+1

你能举出'现存Java SP选项'的例子吗? – mahatmanich 2012-01-10 22:54:13

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元数据文件,并生成用于加密和签署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场景,但试图实现其中一种OpenSAML直接在您的Java应用程序中充满了危险,无论是让它工作还是使其安全。如果您使用OpenSAML,您还将增加网络应用程序的大小。值得注意的是,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相比,它们看起来都很大且过于企业化。

-3

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

相关问题