使用jcifs进行域单点登录

       因有客户的需求为,打开网站,自动使用当前电脑的域账号登录,不需要再次输入账号密码。通俗点来说就是单点登录,基本的实现就是通过jcifs。 原理为配置jcifs获取当前电脑登录的域账号,然后通过域账号去登录系统。

       参考了一些资料,实现起来还是比较简单的。首先,项目引入要使用的jar包,即jcifs-1.3.17.jar(版本不固定尽量选高点)。然后配置web.xml文件,具体如下:

 <filter> 
    <filter-name>NtlmHttpFilter</filter-name> 
    <filter-class>jcifs.http.NtlmHttpFilter</filter-class> 
    <init-param>
        <param-name>jcifs.smb.client.soTimeout</param-name>
      <param-value>5000</param-value>
    </init-param>
    <!--域服务器地址-->
    <init-param> 
        <param-name>jcifs.http.domainController</param-name> 
        <param-value>192.16.10.10</param-value> 
    </init-param>
    <!--域服务器域名-->
    <init-param> 
        <param-name>jcifs.smb.client.domain</param-name> 
        <param-value>china</param-value> 
    </init-param> 
    <init-param> 
     <param-name>jcifs.util.loglevel</param-name> 
     <param-value>2</param-value> 
    </init-param>
    <!--域服务器账号-->
    <init-param>
        <param-name>jcifs.smb.client.username</param-name>
        <param-value>xxxxxx</param-value>
    </init-param>
    <!--域服务器密码-->
    <init-param>
        <param-name>jcifs.smb.client.password</param-name>
        <param-value>xxxxxx</param-value>
    </init-param>
    <init-param>
      <param-name>jcifs.smb.lmCompatibility</param-name>
      <param-value>0</param-value>
    </init-param>
    <init-param>
      <param-name>jcifs.smb.client.useExtendedSecurity</param-name>
      <param-value>false</param-value>
    </init-param>
 </filter> 
 <filter-mapping> 
    <filter-name>NtlmHttpFilter</filter-name> 
    <url-pattern>/Viewer</url-pattern> 
 </filter-mapping>

        web.xml的配置也是比较容易配置,配置好之后,如果当前电脑在域中,则我们可以在代码中去获取用户,具体方法为httpRequest.getRemoteUser();。之后我们拿到登录的用户名,去进行我们应用系统的登录即可。

        配置比较简单,但在用的过程中遇到了两个问题,我搜索后发现也是比较普遍的。

第一个 :jcifs.smb.SmbException: The parameter is incorrect. 域验证是按windows 的HTLM协议实现的,有的机器不能登录是因为机器默认的验证协议是HTLMv2的,跟ie个版本浏览器关系不大,所以需要改一下默认协议,修改注册表。

解决办法:
将下列虚线中间部分拷贝到txt文件中,并修改后缀名称为 .reg 的注册表文件,双击运行一次。
--------------------------------------------------
REGEDIT4
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa]
"LMCompatibilityLevel"=dword:00000001
--------------------------------------------------

该问题解决资料来源:http://blog.sina.com.cn/s/blog_6bf100660101ecr8.html 

第二个:用户打开浏览器后没有自动登录,需要再次输入域账号和密码才能登录。这个是需要去设置下ie浏览器,设置Internet选项-安全-本地Intranet-高级-添加当前地址。然后点击自定义级别,滚动条拉到最后,选自动使用当前用户名密码登录。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值