更新来解决您的编辑:
这里有一些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相比,它们看起来都很大且过于企业化。
你能举出'现存Java SP选项'的例子吗? – mahatmanich 2012-01-10 22:54:13