最近一个项目拿到客户那运行不了。原来我的这个项目要和另一个系统通过http的接口进行通讯。但在客户的生产环境中,那套系统将web应用的登录和Windows Domain的登录结合,做了一个sso单点登录(jcifs实现)。那么我必须要修改我的程序,好自动登录Windows Domain。
通过抓包分析,局域网使用的是NTLM 协议。
当通过浏览器访问被NTLM协议保护的资源的时候,NTLM的认证方式和流程如下:
1: C --> S GET ...
2: C <-- S 401 Unauthorized
WWW-Authenticate: NTLM
3: C --> S GET ...
Authorization: NTLM <base64-encoded type-1-message>
4: C <-- S 401 Unauthorized
WWW-Authenticate: NTLM <base64-encoded type-2-message>
5: C --> S GET ...
Authorization: NTLM <base6

在项目中,为了实现与Windows Domain集成的SSO单点登录,需要通过HTTPClient处理NTLM协议。本文档介绍了NTLM认证的流程,包括Type-1、Type-2和Type-3消息交换,并展示了如何使用HttpClient 4.1以上版本进行NTLM认证,尽管其性能开销较大,但因其连接状态特性,建议通过GET或HEAD触发认证,然后重用连接进行POST或PUT操作。
最低0.47元/天 解锁文章
935

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



