WAFFLE是什么?

WAFFLE是一个Windows认证框架,支持Negotiate, NTLM和Kerberos认证。WAFFLE包含Windows认证相关的C#和Java库。WAFFLE主页 http://dblock.github.io/waffle/

Jetty简介参见 http://www.cnblogs.com/leo100w/p/3809880.html

Jetty支持Windows认证

Jetty作为web服务器和Servlet容器,支持自定义的Filter和Servlet。而Waffle通过Filter实现Windows认证。因此,要使Jetty支持Windows认证就很简单了,只要将Waffle作为自定义Filter加入Jetty就可以了。

DEMO

  1. 下载Jetty, Waffle,并解压;下载jetty-all包(在这里下载 http://central.maven.org/maven2/org/eclipse/jetty/aggregate/jetty-all/
  2. 新建一个Java项目
  3. 将Waffle\bin中的guava-13.0.1.jar, jna-3.5.0.jar, platform-3.5.0.jar, slf4j-api-1.7.2.jar, waffle-jetty.jar, waffle-jna.jar库加入到项目的build路径中
  4. 将Jetty\lib\servlet-api-3.1.jar以及jetty-all-9.2.1.v20140609.jar加入到项目的build路径中
  5. 创建HelloServlet类
    import java.io.IOException;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse; public class HelloServlet extends HttpServlet {
    /**
    *
    */
    private static final long serialVersionUID = -2345771005431135205L; @Override
    protected void doGet(HttpServletRequest request,
    HttpServletResponse response) throws ServletException, IOException {
    response.setContentType("text/html;charset=utf-8");
    response.setStatus(HttpServletResponse.SC_OK);
    response.getWriter().println(
    "<h1>Hello " + request.getRemoteUser() + "!<br/>Role: "
    + request.getUserPrincipal().getName() + "</h1>");
    }
    }
  6. 创建JettyWaffleTest类
    import java.util.EnumSet;
    
    import javax.servlet.DispatcherType;
    
    import org.eclipse.jetty.server.Server;
    import org.eclipse.jetty.servlet.ServletContextHandler; public class JettyWaffleTest {
    public static void main(String[] args) throws Exception {
    Server server = new Server(8080); EnumSet<DispatcherType> dispatches = EnumSet
    .allOf(DispatcherType.class);
    ServletContextHandler context = new ServletContextHandler(
    ServletContextHandler.SESSIONS);
    context.addFilter(waffle.servlet.NegotiateSecurityFilter.class, "/*",
    dispatches);
    context.addServlet(HelloServlet.class, "/");
    context.setContextPath("/"); server.setHandler(context); server.start();
    server.join();
    }
    }
  7. 运行。结果如下
    Hello demo!
    Role: demo

小结

从DEMO可以看出,我们可以通过request.getRemoteUser()获取远程用户登录的Windows用户,当然也可以通过request.getUserPrincipal()获取Principal,该Principal是一个waffle.servlet.WindowsPrincipal类型,通过该类型可以进一步获取各种Windows认证的相关信息。

Jetty支持Windows认证的更多相关文章

  1. 自定义HttpModule,用于未登录用户,不弹出Windows认证窗口,而是跳转回SSO站点

    2012年的一篇随笔记录,可以学习到如何自定义HttpModule,而具体里面针对需求开发的代码,可能未必能让大伙了解到什么,可快速扫描而过. using System; using System.W ...

  2. 彻底理解Windows认证1

    彻底理解Windows认证 一.Windows本地认证 1. 我的密码在哪里? 路径:C:\Windows\System32\config\SAM 当我们登录系统的时候,系统会自动的读取SAM文件中的 ...

  3. windows认证解读

    0x00 本地认证 本地认证基础知识 在本地登录Windows的情况下,操作系统会使用用户输入的密码作为凭证去与系统中的密码进行验证,但是操作系统中的密码存储在哪里呢? %SystemRoot%\sy ...

  4. Windows认证体系解读

    目录 Windows认证方式 Windows本地认证 NTLM认证方式(工作组环境中) wiresharek抓包NTLMv2,使用Hashcat爆破 NTLM认证方式(域环境中) Kerberos认证 ...

  5. 内网渗透之Windows认证(二)

    title: 内网渗透之Windows认证(二) categories: 内网渗透 id: 6 key: 域渗透基础 description: Windows认证协议 abbrlink: d6b7 d ...

  6. iConvert Icons 图标转换生成利器,支持Windows, Mac OS X, Linux, iOS,和Android等系统

    这是一款在线图标转换工具,生成的图标支持Windows, Mac OS X, Linux, iOS, 和 Android等主流系统. 可以上传图标文件转化成另一个平台下的图标文件,例如将windows ...

  7. SVN二次开发——让SVN、TSVN(TortoiseSVN)支持windows的访问控制模型、NTFS ADS(可选数据流、NTFS的安全属性)

    SVN二次开发 ——让SVN.TSVN(TortoiseSVN)支持windows的访问控制模型.NTFS ADS (可选数据流.NTFS的安全属性) SVN secondary developmen ...

  8. 告示:CSDN博客通道支持Windows Live Writer写blog离线好友

    尊敬的各位CSDN用户: 您好! 为了更好的服务客户.CSDN已经支持Windows Live Writer离线写博客啦.Windows Live Writer于2014年5月29日正式上线啦!欢迎大 ...

  9. asp.net权限认证:Windows认证

    asp.net权限认证系列 asp.net权限认证:Forms认证 asp.net权限认证:HTTP基本认证(http basic) asp.net权限认证:Windows认证 asp.net权限认证 ...

随机推荐

  1. 2014 HDU多校弟五场A题 【归并排序求逆序对】

    这题是2Y,第一次WA贡献给了没有long long 的答案QAQ 题意不难理解,解题方法不难. 先用归并排序求出原串中逆序对的个数然后拿来减去k即可,如果答案小于0,则取0 学习了归并排序求逆序对的 ...

  2. Error creating bean with name 'org.springframework.validation.beanvalidation.LocalValidatorFactory

    Error creating bean with name ‘org.springframework.validation.beanvalidation.LocalValidatorFactoryBe ...

  3. 基于visual Studio2013解决算法导论之017查找第n小元素

     题目 查找第n小元素 解决代码及点评 #include <stdio.h> #include <stdlib.h> #include <malloc.h> ...

  4. 比较优势 - MBA智库百科

    比较优势 - MBA智库百科 比较优势 出自 MBA智库百科(http://wiki.mbalib.com/)   这是一个消除歧义页--使用相同或相近标题,而主题不同的条目列表.如果您是通过某个内部 ...

  5. 在Eclipse/MyEclipse中安装spket插件

    Spket ide是强大的工具包为了JavaScript和XML的开发,这个强大的编辑器对JavaScript, XUL/XBLand Yahoo! Widget的开发都有全面的支持 ,比如代码完毕, ...

  6. 我对国内两大购书站点的感受(dearbook和china-pub)

    我在china-pub和dearbook都是老用户了(china-pub五星,dearbook钻石VIP).说一下近来我对两个站点的感觉. 1. Dearbook和当当合作以后送货速度比china-p ...

  7. HDOJ 1217 Floyed Template

    解题思路:1.map简单应用2.Floyd算法的变形,之后判断dis[i][i],如果大于1,则存在利润! #include <iostream> #include <stdio.h ...

  8. 知识普及:iOS7搭载新定位技术iBeacon

    摘自:http://iphone.91.com/tutorial/jcjc/131023/21619035.html 在2013年六月举行的WWDC上,作为iOS 7中最重要的新特性之一,苹果正式对外 ...

  9. 知识点1-3:MVC设计模式

    MVC代表模型-视图-控制器(Model-View-Controller),起源于20世纪70年代的Smalltalk开发社区,2003年起随着Ruby on Rails的出现才在Web上流行使用. ...

  10. 演练5-5:Contoso大学校园管理系统5

    Contoso University示例网站演示如何使用Entity Framework 5创建ASP.NET MVC 4应用程序. Entity Framework有三种处理数据的方式:  Data ...