`
yangyongByJava
  • 浏览: 127230 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

waffle结合spring-security进行windows认证

阅读更多

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文件的配置为:

<filter>

<filter-name>springSecurityFilterChain</filter-name>

<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>

</filter>

<filter-mapping>

<filter-name>springSecurityFilterChain</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>/WEB-INF/waffle-filter.xml</param-value> 

</context-param>

<listener>

<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

</listener>

4、在WEB-INF下建立waffle-filter.xml文件,文件内容如下:

<!-- windows authentication provider -->

<bean id="waffleWindowsAuthProvider"

   class="waffle.windows.auth.impl.WindowsAuthProviderImpl" />

<!-- collection of security filters -->

<bean id="negotiateSecurityFilterProvider"

                class="waffle.servlet.spi.NegotiateSecurityFilterProvider">

<constructor-arg ref="waffleWindowsAuthProvider" />

</bean>

<bean id="basicSecurityFilterProvider" class="waffle.servlet.spi.BasicSecurityFilterProvider">

<constructor-arg ref="waffleWindowsAuthProvider" />

</bean>

<bean id="waffleSecurityFilterProviderCollection"

   class="waffle.servlet.spi.SecurityFilterProviderCollection">

<constructor-arg>

<list>

<ref bean="negotiateSecurityFilterProvider" />  

<ref bean="basicSecurityFilterProvider" />  

</list>

</constructor-arg>

</bean>

<!-- spring filter entry point -->

<sec:http entry-point-ref="negotiateSecurityFilterEntryPoint">

<sec:intercept-url pattern="/**" access="IS_AUTHENTICATED_FULLY" />

<sec:custom-filter ref="waffleNegotiateSecurityFilter" position="BASIC_AUTH_FILTER" />

</sec:http>

 

<bean id="negotiateSecurityFilterEntryPoint"

   class="waffle.spring.NegotiateSecurityFilterEntryPoint">

<property name="provider" ref="waffleSecurityFilterProviderCollection" />

</bean>

<!-- spring authentication provider -->

<sec:authentication-manager alias="authenticationProvider" />

<!-- spring security filter -->

<bean id="waffleNegotiateSecurityFilter" class="waffle.spring.NegotiateSecurityFilter">

<property name="Provider" ref="waffleSecurityFilterProviderCollection" />

<property name="AllowGuestLogin" value="true" />

<property name="PrincipalFormat" value="fqn" />

<property name="RoleFormat" value="both" />

</bean>

注意:当访问的时候最好将访问地址写成项目部署所在机器的主机名。

当浏览器发送请求时,首先经过negotiateSecurityFilterEntryPoint处理,若未经认证或认证失败,则会弹出一个页面要求输入用户名和密码,点击确定按钮后,交由waffleNegotiateSecurityFilter处理,waffleNegotiateSecurityFilter调用相应的类和方法判断用户名和密码是否正确,如果正确,在允许访问,此时可通过request.getUserPrincipal()获取登录用户的相关信息。

 

 

 

分享到:
评论

相关推荐

    Waffle1.5-java版本window主机认证

    在使用 Waffle 进行开发时,首先需要将提供的库(如 Waffle.1.5.zip 和 waffle-master.zip 中的 JAR 文件)添加到项目类路径中。接着,根据所使用的安全框架选择合适的适配器进行配置。例如,在 Spring Security 中...

    Waffle Due Dates-crx插件

    改进Waffle.io并认可到期日 Chrome扩展程序在waffle.io中添加了“到期日”识别功能。 只需在卡片/问题上添加文字,例如“ Due 9/1-做某事”或“问题名称等等”(日期为2016年10月12日)即可。到期-如果卡“很快”...

    python-waffle-charts-with-pywaffle

    在这个主题中,“python-waffle-charts-with-pywaffle”是一个关于如何在Python中使用`pywaffle`库创建waffle图表的教程。`pywaffle`是基于matplotlib库的一个扩展,专门用于制作这种类型的图表。 首先,`Jupyter ...

    Waffle Web Framework-开源

    Waffle是一个Java Web框架,允许基于pojo的操作。 内置了依赖性注入支持。Waffle没有专有的模板语言,也不需要任何XML配置文件。 华夫饼应用程序易于编写和测试。

    angular-waffle:angular-waffle Bower 组件

    angular-waffle Bower 组件 华夫饼生成器是一种流行的方法,可以创建大量的胡言乱语,读起来令人不安。 使用此组件填充您的页面(或论文),您通常会在其中使用无聊的 Lorum Ipsum 垃圾。 有关它产生的示例, 这是 ...

    uportal-waffle-menu-service:支持uPortal华夫饼菜单UI的后端服务

    uPortal华夫菜单服务 RESTful服务,可为每个用户提供适当的菜单项。 用户由JWT标识,并且JWT中嵌入的角色充当针对项目“主”列表的筛选器。 项目主列表是通过以下格式的服务器上的json文件配置的: ...

    buidler-waffle-typechain-oz-vue:Dapp入门套件,使用:Buidler + Waffle + TypeChain + OpenZeppelin CLI + Vue(TypeScript)

    Buidler + Waffle + TypeChain + OpenZeppelin CLI + Vue(TypeScript) 受到启发 ,这是一个预先配置的入门工具包,它使用最新的和最大的工具集从零到英雄 :flexed_biceps: 在四分之一的时间内,使用10倍的类型...

    legendary-waffle-源码.rar

    《传奇华夫饼:legendary-waffle-源码解析》 在编程世界中,源码是程序员的心脏,它是理解软件工作原理的关键。当我们提到"legendary-waffle-源码.rar"时,我们可以预见到这可能是一个知名的项目,或者至少在某些...

    基于Angular6和SpringCloud构建分布式博客系统waffle-platform.zip

    【博客个人资源】 包含前端、后端、移动开发、操作...Java、Python、Node.js、Spring Boot、Django、Express、MySQL、PostgreSQL、MongoDB、React、Angular、Vue、Bootstrap、Material-UI、Redis、Docker、Kubernetes

    Velocity Scores for waffle.io-crx插件

    为waffle.io启用Velocity Scores(故事点),因此您可以估算每个问题的工作量 waffle.io的Velocity Score的Chrome扩展,从https://gist.github.com/jhubert/8eec558ab8cea9fd4aaa移植,它根据GitHub问题标题的内容...

    Waffle-takeout-reports:一个简单的应用程序,用于显示连接到我们的wafflre-takeout实例的用户和存储库

    华夫饼外卖报告启动应用npm installmongoURL=_my_waffle_db_url_ npm start谁在使用华夫饼? 显示Waffle用户的当前列表。 显示当前已创建的华夫板列表。

    waffle-js:插件应用程序,用于向您的网页添加评论

    为了提升用户体验,开发者可以结合Waffle-js的API进行二次开发,例如添加表情符号支持、实现Markdown编辑、集成机器学习进行垃圾评论过滤等。此外,还可以利用Web存储技术(如localStorage)缓存用户信息,提高加载...

    waffle-grid:一个易于使用的flexbox网格系统

    link rel =" stylesheet " href =" https://unpkg.com/waffle-grid/dist/waffle-grid.min.css " &gt; &lt;!-- or --&gt; &lt; link rel =" stylesheet " href =" ...

    waffle-buttons:纽扣味华夫饼

    【标题解析】:“waffle-buttons:纽扣味华夫饼”这个标题可能是一个项目或库的名称,将“华夫饼”与“纽扣”相结合,可能是为了形象地描述一种特殊的用户界面元素,比如UI设计中的按钮。"纽扣味"可能意味着这种按钮...

    华夫饼干「The Waffle」-crx插件

    抓住并发布故事 抓取并发布您喜欢的故事。 支持语言:English (UK)

    waffle-iron:Chrome 扩展扩展 waffle.io 板面板的宽度以增加可读性

    “waffle-iron”是一个针对Chrome浏览器的扩展插件,它的主要功能是针对waffle.io平台的面板进行优化。waffle.io是一个流行的项目管理工具,特别是对于GitFlow工作流程的团队,它将GitHub上的问题和分支与敏捷看板相...

    dotnet-SideWaffle海量实用VisualStudio项目模板用于Web和桌面开发

    这个压缩包文件"ligershark-side-waffle-aaf06e4"显然是SideWaffle的一个版本或分支,其中包含了各种模板资源。 SideWaffle的主要知识点包括: 1. **Visual Studio扩展性**:SideWaffle作为Visual Studio的扩展,...

    The Waffle-crx插件

    **The Waffle-crx插件** 是一款专为英语(英国)用户设计的浏览器扩展程序,它的主要功能是帮助用户方便地抓取和发布他们感兴趣的故事。这款插件旨在提升用户的网络浏览体验,特别是对于那些热衷于分享网络内容的...

Global site tag (gtag.js) - Google Analytics