SGET...2:C<--S401Unaut" />

欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

httpclient 實(shí)現(xiàn)自動登錄NTLM 域驗(yàn)證(sso)

系統(tǒng) 1992 0

最近一個項(xiàng)目拿到客戶那運(yùn)行不了 原來我的 這個項(xiàng)目要和另一個系統(tǒng)通過http的接口進(jìn)行通訊。但在客戶的生產(chǎn)環(huán)境中,那套系統(tǒng)將web應(yīng)用的登錄和 Windows Domain的登錄結(jié)合,做了一個sso單點(diǎn)登錄(jcifs實(shí)現(xiàn))。那么我必須要修改我的程序,好自動登錄 Windows Domain。

通過抓包分析,局域網(wǎng)使用的是NTLM 協(xié)議。

當(dāng)通過瀏覽器訪問被 NTLM協(xié)議 保護(hù)的資源的時候, NTLM 的認(rèn)證方式和流程如下:

        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 <base64-encoded type-3-message>
    
    6: C <--  S   200 Ok
  

Type-1 消息包括機(jī)器名、 Domain

Type-2 消息包括 server 發(fā)出的 NTLM challenge

Type-3 消息包括用戶名、機(jī)器名、 Domain 、以及兩個根據(jù) server 發(fā)出的 challenge 計(jì)算出的 response ,這里 response 是基于 challenge 和當(dāng)前用戶的登錄密碼計(jì)算而得

PS:在第二步時,當(dāng)瀏覽器接收到一個401 Unauthorized response ,會 彈出該對話框讓用戶輸入用戶名、密碼。(ie有可能會自動登錄)

httpclient 實(shí)現(xiàn)自動登錄NTLM 域驗(yàn)證(sso)


我的程序(client)要和另個程序走h(yuǎn)ttp接口通訊(server), server再去ad驗(yàn)證域登錄


httpclient 實(shí)現(xiàn)自動登錄NTLM 域驗(yàn)證(sso)


httpclient 實(shí)現(xiàn)NTLM驗(yàn)證(當(dāng)然你也可以自己實(shí)現(xiàn)協(xié)議)

HttpClient從version 4.1 開始 完全支持 NTLM authentication protocol(NTLMv1, NTLMv2, and NTLM2 ), 文檔的原話是“The NTLM authentication scheme is significantly more expensive in terms of computational overhead
and performance impact than the standard Basic and Digest schemes.”

但是使用起來還是非常的方便的。因?yàn)?NTLM 連接是有狀態(tài)的,通常建議使用相對簡單的方法觸發(fā)NTLM 認(rèn)證,比如GET或 HEAD, 而重用相同的連接來執(zhí)行代價(jià)更大的方法,特別是它們包含請求實(shí)體,比如 POST或 PUT。

    DefaultHttpClient httpclient = new DefaultHttpClient(); 
NTCredentials creds = new NTCredentials("user", "pwd", 
"myworkstation", "microsoft.com"); 
httpclient.getCredentialsProvider().setCredentials(AuthScop
.ANY, creds); 
HttpHost target = new HttpHost("www.microsoft.com", 80, 
"http"); 
// 保證相同的內(nèi)容來用于執(zhí)行邏輯相關(guān)的請求 
HttpContext localContext = new BasicHttpContext(); 
// 首先執(zhí)行簡便的方法。這會觸發(fā)NTLM認(rèn)證 
HttpGet httpget = new HttpGet("/ntlm-protected/info"); 
HttpResponse response1 = httpclient.execute(target, httpget
localContext); 
HttpEntity entity1 = response1.getEntity(); 
if (entity1 != null) { 
entity1.consumeContent(); 
} 
//之后使用相同的內(nèi)容(和連接)執(zhí)行開銷大的方法。 
HttpPost httppost = new HttpPost("/ntlm-protected/form"); 
httppost.setEntity(new StringEntity("lots and lots of data"))
HttpResponse response2 = httpclient.execute(target, httppost,
localContext); 
HttpEntity entity2 = response2.getEntity(); 
if (entity2 != null) { 
entity2.consumeContent(); 
} 
  

稍后在研究一下jcifi和smb協(xié)議


httpclient 實(shí)現(xiàn)自動登錄NTLM 域驗(yàn)證(sso)


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。。?/p>

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 欧美日韩免费在线观看 | 91在线视频免费观看 | 国产亚洲综合一区在线 | a级淫片 | 999久久久免费精品国产 | 欧美色xx | 日韩精品资源 | 欧美一区二区三区久久精品 | 99国产精品久久久久久久成人热 | 成人在线精品视频 | 性夜影院爽黄a爽在线看香蕉 | 天天拍天天干天天操 | 亚洲欧美18v中文字幕高清 | 男女做性无遮挡免费视频 | 激情六月色 | 草草线在成人免费视频 | av成人免费在线观看 | 国产成人精品三级 | 免费香蕉视频 | 无码又黄又爽又舒服的A片 综合久久网 | 亚洲黄色高清视频 | 2022国产成人福利精品视频 | 韩国精品免费视频 | 国产高清一区二区 | 久久99国产精品 | 91高清免费观看 | 欧美日韩久久 | 看一天影院 理论片 | 国产精品第一国产精品 | 亚洲欧美日韩精品一区 | 成人自拍在线 | 久久久久久免费播放一级毛片 | 欧美一级网站 | 亚洲国产中文字幕 | 亚欧精品一区二区三区四区 | 精品亚洲永久免费精品 | 男人午夜小视频 | 在线二区人妖系列 | 香蕉视频在线观看视频 | 久草精品视频 | 国产精品天天天天影视 |