2015-07-03 23 views
6

Sto provando a utilizzare il proxy cntlm sul mio computer Windows per parlare con un'applicazione Web locale su IIS che utilizza l'autenticazione di Windows da PhantomJS. Per creare il proxy, che sto facendo: cntlm -v -u [email protected] -p password -l 1456 localhost:80proxy cntlm con phantomjs

mia app vita a localhost/myapp

Per verificare se questo funziona, cerco di individuare localhost:1456/myapp ma ho sempre ottenere una sfida di autenticazione e nessun nome utente sensibile/la combinazione di password sembra funzionare. Qualche idea sul perché questa installazione potrebbe non funzionare come previsto?

Quando mi ha colpito l'endpoint Proxied in un browser, questo è l'output di cntlm:

http://pastebin.com/xvvmfsGV

risposta

8

Dopo aver lottato con il concetto per un po 'ho finalmente capito come ottenere questo set up.

Dopo aver installato cntlm, ho eseguito il seguente da un prompt dei comandi:

"c:\Program Files (x86)\Cntlm\cntlm.exe" -u <user_name> -d <domain_name> -H 

Questo chiede la password e sputa fuori tre hash da utilizzare nel file di configurazione.

Mi ridussero la configurazione desiderata in cntlm.ini a:

Username <user_name> 
Domain  <domain_name> 

PassLM   <LM_hash> 
PassNT   <NT_hash> 
PassNTLMv2  <NTLMv2_hash> 

Proxy  192.168.7.1:80 #random proxy 
NoProxy * 

Listen  3133 # unused port 

cntlm forze tuoi per specificare un proxy di livello superiore, anche se non è necessario uno o avere uno, in modo che qualsiasi numero valido per tale opzione andrà bene. L'impostazione di NoProxy a * assicura che qualsiasi richiesta non venga mai inoltrata al proxy fittizio specificato.

Eseguire la console "c:\Program Files (x86)\Cntlm\cntlm.exe" -f in una console per verificare che tutto funzioni correttamente. Altrimenti, avvialo e fermalo come servizio.

Per provare con phantomjs ho usato il seguente script:

var page = require('webpage').create(); 

page.open('http://<machine_name>/myapp', function(status) { 
    console.log("Status: " + status); 
    if(status === "success") { 
    page.render('example.png'); 
    } 
    phantom.exit(); 
}); 

<machine_name> non può essere localhost perché phantomjs bypassa i proxy quando l'ospite è localhost, in modo da utilizzare il nome della macchina o l'indirizzo IP.

Per eseguirlo: phantomjs --proxy=localhost:3133 test.js