选择适用于Web应用程序单点登录的Kerberos(SPNEGO)Java库

5
我目前正在实现企业身份验证机制,包括单点登录在内的Java Web应用程序。我们主要针对Windows网络,Kerberos听起来是一个合理的选择。顺便说一下,据我所知,在Web(HTTP)环境中用于SSO的协议是SPNEGO,它基本上是Kerberos的一个包装器。因此,听起来Kerberos HTTP SSO库实际上是在使用SPNEGO——如果我错了,请纠正我。
当我开始调查这个话题时,我意识到没有明显的选择。让我列出这些:
  1. Spring security Kerberos/SPNEGO extension。这是我看过的第一个(因为我们已经在使用Spring security),但它似乎在几年前就停滞不前了,只发布了v1.0.0第二个里程碑版本。只有这个SO问题给了一点希望,认为它可以用于生产。
  2. WAFFLE - Windows Authentication Functional Framework。看起来很活跃且功能丰富。它可以作为通用servlet“插入”,也可以作为Spring security过滤器
  3. SPNEGO SourceForge。看起来非常轻量级,提供HTTP Servlet过滤器,教程易于跟随。
是否有任何特定的原因选择一个选项而不是另一个选项?还有其他选项吗?
1个回答

3

首先,您的假设是正确的。您需要使用SPNEGO来执行HTTP的SSO。

  1. 这只能在Spring中合理使用。如果您已经拥有它,请使用它。我们已经使用它超过两年了。它很好地完成了工作。
  2. 这仅适用于Windows。
  3. 使用与Spring相同的JGSS,但是与框架无关。这似乎非常有效。

如果您正在使用Tomcat 7,则已经内置支持。我已经捐赠了适当的代码。您应该明确指定您期望的内容。如果您没有期望,但要进行身份验证,请使用Spring的3或1。


抱歉,但是第二点是错误的。我的Tomcat服务器使用SPNEGO在Linux上正常运行。我还测试了在已配置kerberos客户端堆栈的Linux上运行Firefox的身份验证。 - Yves Martin
@YvesMartin,许多旧的回答现在已经失效,我因此进行了一次踩票攻击。我在2012年是正确的。 - Michael-O
很抱歉,但我最初于2009年在Linux服务器上部署了Java 6上的Alfresco服务器,并使用SPNEGO身份验证为EPFL提供Windows、Linux和Mac客户端。总之,一旦Java包含了Kerberos支持,它就已经是跨平台的了。 - Yves Martin
2
请重新阅读问题和我的答案。OP提到了三个选项,我已经对这三个选项进行了评论,而Waffle仅在Windows上运行。 - Michael-O
1
@youcanlearnanything,这是正确的,因为我只在工作中使用Tomcat。 - Michael-O
显示剩余7条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接