waffle是实现Windows & Active Directory单点登录的一种方式,它能过做一切windows认证 的事情,包括 Negotiate ,NTLM和Kerberos。其实现步骤如下:
1.下载waffle所需的jar文件,下载地址http://dblock.github.com/waffle/;
2.新建一个web项目,将waffle认证和spring-security相关的jar文件添加到web项目中,waffle所需的jar包分别为:
commons-logging-1.1.1.jar、guava-r07.jar、jna.jar、platform.jar、waffle-jacob.jar、waffle-jna.jar;
3、修改web.xml文件的配置为:
4、在WEB-INF下建立waffle-filter.xml文件,文件内容如下:
class="waffle.windows.auth.impl.WindowsAuthProviderImpl" /> class="waffle.servlet.spi.NegotiateSecurityFilterProvider">
class="waffle.servlet.spi.SecurityFilterProviderCollection">
class="waffle.spring.NegotiateSecurityFilterEntryPoint">
注意:当访问的时候最好将访问地址写成项目部署所在机器的主机名。
当浏览器发送请求时,首先经过negotiateSecurityFilterEntryPoint处理,若未经认证或认证失败,则会弹出一个页面要求输入用户名和密码,点击确定按钮后,交由waffleNegotiateSecurityFilter处理,waffleNegotiateSecurityFilter调用相应的类和方法判断用户名和密码是否正确,如果正确,在允许访问,此时可通过request.getUserPrincipal()获取登录用户的相关信息。