这是场景。我的代码在 AD 域中的 Web 服务器上运行。一些客户已连接到我。如何获取该客户的用户名,而不让客户在浏览器中填写表格? Web服务器端必须使用Java技术。
edit:
我最终使用了 Spring Security Negotiate Filter,如下面的链接所述。有一个可用的教程。使用request.getPrincipal().getName()从 servlet 内部给出用户名。
http://waffle.codeplex.com/ http://waffle.codeplex.com/
您需要设置Spring Security Kerberos 扩展 http://static.springsource.org/spring-security/site/extensions/krb/index.html- 这是执行您在 Spring Security 3 中描述的操作的唯一开箱即用的方法。这支持 SPNEGO 协商,但需要在服务器上进行一些设置(以及了解 SPNEGO 和 Kerberos 工作原理)。
文档不多,但 Mike 随 1.0M2 提供的示例应用程序非常棒,涵盖了大多数常见场景,包括自动 SPNEGO 身份验证。
SPNEGO 的关键是设置一个自定义AuthenticationEntryPoint
- 您需要使用自定义 spring bean 来执行此操作,如下所示:
<bean id="kerbEntryPoint" class="org.springframework.security.extensions.kerberos.web.SpnegoEntryPoint" />
<bean id="kerbAuthenticationProcessingFilter" class="org.springframework.security.extensions.kerberos.web.SpnegoAuthenticationProcessingFilter">
<property name="authenticationManager" ref="authenticationManager" />
</bean>
...除了这些之外,还需要更多 bean(再次参考带有 Kerberos 扩展的示例)。如果您进一步了解 Spring Security 或者您想要确切的详细信息(由于涉及到许多 bean/config 位,因此了解您的配置的一些知识将会有所帮助,例如您是否正在使用<http>
命名空间样式与否)。
除了此选项之外,您还必须设置类似类型的 SPNEGO 身份验证(例如按照您的建议使用 WAFFLE)-其他问题 https://stackoverflow.com/questions/339101/tomcat-authentication-using-spnego-kerberos-and-delegation很好地涵盖了这一点。
最后,您可以在 Tomcat 前面使用另一个更好地支持 SPNEGO 或 NTLM 的 Web 服务器,例如 Microsoft IIS 或 Apache Web Servermod_spnego http://sourceforge.net/projects/modgssapache/.
希望这些想法之一对您有用!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)