From 78b808449ac793247b4d669f15f085a51d6ea4f0 Mon Sep 17 00:00:00 2001 From: Earl Date: Tue, 2 Feb 2016 17:55:50 -0700 Subject: [PATCH] Improved error handling Returns false on exceptions --- ntlm.js | 51 +++++++++++++++++++++++++++++++-------------------- 1 file changed, 31 insertions(+), 20 deletions(-) diff --git a/ntlm.js b/ntlm.js index 6f8e711..d4b5e2b 100644 --- a/ntlm.js +++ b/ntlm.js @@ -231,25 +231,36 @@ Ntlm.isChallenge = function(xhr) { return header && header.indexOf('NTLM') != -1; }; -Ntlm.authenticate = function(url) { - if (!Ntlm.domain || !Ntlm.username || !Ntlm.lmHashedPassword || !Ntlm.ntHashedPassword) { - Ntlm.error('No NTLM credentials specified. Use Ntlm.setCredentials(...) before making calls.'); - return false; - } - var hostname = Ntlm.getLocation(url).hostname; - var msg1 = Ntlm.createMessage1(hostname); - var request = new XMLHttpRequest(); - request.open('GET', url, false); - request.setRequestHeader('Authorization', 'NTLM ' + msg1.toBase64()); - request.send(null); - var response = request.getResponseHeader('WWW-Authenticate'); - var challenge = Ntlm.getChallenge(response); - - var msg3 = Ntlm.createMessage3(challenge, hostname); - request.open('GET', url, false); - request.setRequestHeader('Authorization', 'NTLM ' + msg3.toBase64()); - request.send(null); - return request.status == 200; +Ntlm.authenticate = function (url) { + if (!Ntlm.domain || !Ntlm.username || !Ntlm.lmHashedPassword || !Ntlm.ntHashedPassword) { + Ntlm.error('No NTLM credentials specified. Use Ntlm.setCredentials(...) before making calls.'); + return false; + } + var hostname = Ntlm.getLocation(url).hostname; + var msg1 = Ntlm.createMessage1(hostname); + var authMsg1 = 'NTLM ' + msg1.toBase64(); + var request = new XMLHttpRequest(); + + request.open('GET', url, false); + request.setRequestHeader('Authorization', authMsg1); + try { + request.send(null); + } catch (ex) { + return false; + } + var response = request.getResponseHeader('WWW-Authenticate'); + var challenge = Ntlm.getChallenge(response); + + var msg3 = Ntlm.createMessage3(challenge, hostname); + var authMsg3 = 'NTLM ' + msg3.toBase64(); + request.open('GET', url, false); + request.setRequestHeader('Authorization', authMsg3); + try { + request.send(null); + } catch (ex) { + return false; + } + return request.status == 200; }; /* @@ -581,4 +592,4 @@ function des_createKeys (key) { } //for each iterations //return the keys we've created return keys; -} //end of des_createKeys \ No newline at end of file +} //end of des_createKeys