房产这么做网站才多点击量,网站建设及网络营销,网站建设设计规划书,个人网站免费制作最近在项目中遇到一个需求#xff0c;此需求场景就是#xff1a;当用户登录了windows#xff0c;若用户用的AD域账号登录#xff0c;则用IE浏览器打开应用系统时#xff0c;则不必再输入账号和密码#xff0c;自动登录到系统。简单滴说#xff0c;就是应用系统与AD域进行…最近在项目中遇到一个需求此需求场景就是当用户登录了windows若用户用的AD域账号登录则用IE浏览器打开应用系统时则不必再输入账号和密码自动登录到系统。简单滴说就是应用系统与AD域进行单点。经过搜索得知可以知道HTTP协议中有个401状态表示当前用户未授权(401 Unauthorized)当要求用NTML方式提供用户信息时IE浏览器会自动获取当前windows账户(前提是要浏览器勾选了“自动使用当前用户名和密码登陆”)服务器获取后将此信息向域服务器进行验证并返回登陆状态信息。以上就是要实现的单点的原理。那我们现在来看看如果要实现这个需求都有哪些方案。1.人工获取到当前windows账户信息然后应用服务器向域服务器进行验证此方案比较棘手的是要怎么获取到windows账户信息呢可能账户名还比较容易获取但是密码就别想微软会明文提供给你了。2.利用现成的IIS服务器做中介在用户登录应用服务器的时候通过IIS服务器进行登录验证然后根据其返回的信息进行登录处理此方案是行得通的比较婉转不那么雅观这里就不多说了。3.利用第三方的开源项目jcifs。jcifs是运用的最多的。但是它有个缺点就是不支持NTLM2协议。而windows vista或7以上的系统都是默认采用NTLM2协议的而目前用户也都是windows7以上的操作系统因此这个方案也比较纠结。最终有了下面的方案。4.利用有限制的Jespa。这个是可以免费使用的支持NTLM2协议但是呢不开源也有license限制。在这里Jespa我们只做研究不做其它目的方便大家学习交流。因为这个在网络上介绍的太少了。那么从官网下载Jespa包后里面会包含技术文档和一些使用例子。根据技术文档的介绍我们可以一步一步进行操作体验下它的提供的功能。一、环境的搭建。首先是要搭建AD域的环境这个请谷歌。比较简单但是要注意的是同时也要安装DNS服务不然后面利用jespa提供的脚本进行创建的计算机账户会不成功。搭建好后就可以找一台机器来加入这个AD域如能成功加入这个域则搭建成功。二、利用jespa提供的脚步创建计算机账户。目的原话是这样说的“to authenticate clients using NTLM such as with the HttpSecurityService (or HttpSecurityFilter),SaslServer, or JAAS LoginModule, a Computer account must be created in Active Directory with a knownpassword as described in this section”不过我们也可以不需要利用它提供的脚步进行创建我们也可以手工创建一个出来但是呢手工创建的是不会有密码的因此手工创建完后还是需要利用它提供的脚步来创建密码。利用它脚本来进行创建有个好处就是按照它的提示一步一步进行最后它会自动生成一份配置文档给你。这份配置是后面项目的运行需要用到的。三、配置如下所示#此处可采用的Provider包括(默认为NtlmSecurityProvider)NtlmSecurityProviderLdapSecurityProviderChainSecurityProviderWordPressSecurityProviderprovider.classnamejespa.ntlm.NtlmSecurityProvider#以下user和pwd当登陆采用Form Login时才需要配置。如SSO采用IE内置弹出窗口可不配置。http.parameter.username.nameusernamehttp.parameter.password.namepassword#当URL请求中包含参数logout1时将删除会话退出系统。#例如https://as1.busicorp.local/account/login?logout1http.parameter.logout.name logout#http.parameter.anonymous.nameanon#当登陆验证失败或异常时将转向该页面。该路径需包含工程名。fallback.location /login.jsp#哪些页面不进入jespa filter/login.jsp,excludes /logout.jsp,/logoutConfirm.jsp,/resource/*#groups.allowed BUSICORP\\Domain Admins## NtlmSecurityProvider properties##jespa.log.path 该路径经测试必须为绝对路径。与工程路径无关jespa.log.path c://jespa.log#jespa.log.level 3以上信息为Debug状态如发布后需修改为1jespa.log.level 4jespa.account.canonicalForm 3# Replace the following with properties determined in Step 1 of Installation##域名jespa.bindstr test.comjespa.domain.netbios.name test#可执行DNS解析Server IP#jespa.dns.servers 192.168.15.110,192.168.15.115#jespa.dns.site Paris##以下帐号必须为Computer Account而非普通User。可在AD Server用jespa中的SetupWizard.vbs创建。由于AD不熟悉其他方式不知如何创建##注意创建Account时无$ 此处配置必须有$# Generated by the Jespa Setup Wizard from IOPLEX Software on 2014-10-28#jespa.bindstr testoa.comjespa.dns.servers 192.168.92.135jespa.dns.site Default-First-Site-Namejespa.service.acctname jespa1$test.comjespa.service.password pej~43juz-83四、利用它提供的web应用进行测试只要配置及Filter正确运行后即可自动登录到域验证并返回你的账户信息根据它提供的账户名就可以利用这个账户名来在自己的应用系统里面单点很简单的。五、一些需求定制当然了能自动登录是基本功能。但是如果有些用户不是域用户怎么办这时候如果你不是域用户则会弹出微软的验证框来进行账户信息填写。但是问题还是会存在的因为你可能根本不是域用户是应用系统里面的一个特殊用户那么这个就得利用应用系统本身提供的验证框架了。一直不消失的验证框很是让人蛋疼。因此可以在其代码做一点定制让其若果不是域用户则跳转回应用系统本身的验证页面(不需要那么复杂具体看配置文件的fallback.location注释)。特别注意的是配置参数需要特别严谨小心别让Filter死循环了。感觉还有很多东西要说但是有些东西只能意会不能言传自己动手做了才会有了感觉。就这样吧心情不太好唉。