我可以在不使用Apache和shibd的情况下在我的Java Webapp中集成Shibboleth SSO吗?

时间:2015-06-17 09:31:13

标签: java jetty single-sign-on shibboleth

我正在使用嵌入式Jetty的纯Java Web应用程序,我希望集成Shibboleth登录。要做到这一点,请关注switch.ch's guide for Shibboleth Service Provider Deployment,其中声明:

  

Shibboleth服务提供程序由运行的守护程序shibd组成   所有主要操作系统和一个web服务器模块mod_shib   原生支持:

     
      
  • Apache Web服务器(版本1.3.x,2.x)
  •   
  • IIS(版本6,7和8)
  •   

我的问题是,有没有办法在我的Java Web应用程序中集成Shibboleth SSO而不使用Apache Web服务器或运行shibd的IIS?也许有人之前做过这个并且可以提供示例Servlets / Filters等等?

我不希望在Shibboleth的应用程序前面有一个Web服务器,因为它会使安装变得复杂。目前,安装只需两个步骤:提取人工制品并运行启动脚本,如果我能保持这样,我将不胜感激。

2 个答案:

答案 0 :(得分:1)

Shibboleth服务提供商负责处理许多复杂的用例,例如密钥轮换,元数据刷新和属性重新映射。如果您有一个非常简单的用例,您需要在一个很少更改的Shibboleth身份提供程序中对用户进行身份验证,您可以考虑直接在Java代码中验证SAML 2.0断言。

如果您已经使用spring-security,那么您应该首先查看spring-security-saml项目:

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

或者,您可以从OpenSAML(https://wiki.shibboleth.net/confluence/display/OpenSAML/Home)等低级库开始,也可以从LastPass Java SAML SDK(https://github.com/lastpass/saml-sdk-java)等更高级别的库开始。

答案 1 :(得分:1)

将shibboleth sp放在前面的Web服务器是最简单的方法。此外,如果您发现idp发布的所有属性仅针对您的身份存储验证它们,您可以添加servlet过滤器和检查标头。