最近一个项目拿到客户那运行不了。原来我的这个项目要和另一个系统通过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有可能会自动登录)

我的程序(client)要和另个程序走http接口通讯(server),server再去ad验证域登录

本文介绍如何在Java项目中使用HttpClient库处理NTLM域验证,实现代理服务器上的SSO单点登录。通过分析NTLM认证流程,展示如何设置NTCredentials并重用连接执行HTTP请求。
最低0.47元/天 解锁文章
1047

被折叠的 条评论
为什么被折叠?



