使用Java和SAML 2.0进行Web SSO

我想编写一个Web应用程序,它使用由身份提供者发布的SAML 2.0令牌进行身份validation。 据我所知,根据这个问题 ,PHP世界中有一个可行的解决方案,使用simpleSAMLphp 。

Java世界中是否存在等效方法? 常见的servlet容器或应用程序服务器是否有开箱即用的解决方案和/或教程?

您可以尝试OpenSAML项目 ; 它提供了一个用于创建和validationSAML令牌的Java库。

你可以看看2个产品:

  • JOSSO: http : //www.josso.org
  • OpenAM,自从Oracle决定杀掉它之后,它是Sun的OpenSSO的一个分支: http : //forgerock.com/openam.html

两者都有一个相当令人印象深刻的function列表,并提供广泛的SSO代理列表。

代理方法的主要好处是,您不必在应用程序中关注身份validation过程,因为它由代理和SSO基础结构处理。

如果您要开发自己的SAML2服务提供商,那么使用OpenSAML是可行的方法。 缺点是这个库没有很好的记录。 不过,你应该在Web上轻松找到关于OpenSAML的一些教程。
您可以将其实现为例如servletfilter,以便您的应用程序代码不依赖于SAML。

最近为应用程序实现了SAML身份validation,我在OASIS SAML2技术概述文档中找到了最有用的信息。 它非常易读,并包含传递的XML消息的真实示例。

第5.1节描述了将您的应用程序(服务提供者或SP)请求身份validation与远程身份提供者(Idp)进行交互。

http://wiki.oasis-open.org/security/Saml2TechOverview

提供更多最新答案,因为有一段时间没有访问过:

如果你正在做一个Spring项目,我已经成功使用了Spring Security SAML。 您不必使用Spring Security来保护您的应用程序以使用SAML扩展,尽管它使它更容易一些。

http://projects.spring.io/spring-security-saml/

您需要的一切都在OpenSSO网站上 , OpenAM作为其inheritance者。