java对接ntlm,httpclient 实现自动登录NTLM 域验证(sso) .

最近一个项目拿到客户那运行不了。原来我的这个项目要和另一个系统通过http的接口进行通讯。但在客户的生产环境中,那套系统将web应用的登录和Windows Domain的登录结合,做了一个sso单点登录(jcifs实现)。那么我必须要修改我的程序,好自动登录Windows Domain。

通过抓包分析,局域网使用的是NTLM 协议。

当通过浏览器访问被NTLM协议保护的资源的时候,NTLM的认证方式和流程如下:1: C --> S GET ...

2: C

WWW-Authenticate: NTLM

3: C --> S GET ...

Authorization: NTLM

4: C

WWW-Authenticate: NTLM

5: C --> S GET ...

Authorization: NTLM

6: C

Type-1消息包括机器名、Domain等

Type-2消息包括server发出的NTLM challenge

Type-3消息包括用户名、机器名、Domain、以及两个根据server发出的challenge计算出的response,这里response是基于challenge和当前用户的登录密码计算而得PS:在第二步时,当浏览器接收到一个401 Unauthorized的response,会弹出该对话框让用户输入用户名、密码。(ie有可能会自动登录)

1334041246_3214.jpg

我的程序(client)要和另个程序走http接

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值