2017-07-06 70 views
0

私は、サーバーで許可されているさまざまな認証方式でXMLHttpRequest(firefox)を使用してMicrosoftサーバーにSOAPリクエストを作成しようとしています。Windows認証付きXMLHttpRequest SOAPリクエスト

var xmlhttp = new XMLHttpRequest(); 
xmlhttp.open('POST', url, true); 
xmlhttp.setRequestHeader("Content-Type", "text/xml; charset=UTF-8"); 
xmlhttp.setRequestHeader("Connection", "keep-alive"); 

xmlhttp.onreadystatechange = function() { 
    if (xmlhttp.readyState == 4) { 
     if (xmlhttp.status == 200) { 
      alert(xmlhttp.responseText); 
     } 
    } 
} 

xmlhttp.send(soapRequest); 

この場合、すべて正常に動作します。このコードを実行すると、ユーザー名とパスワードの入力を求めるメッセージが表示され、資格情報を入力すると、サーバーから応答が得られます。これは、Basic認証、Digest認証、Windows認証で動作します。

しかし、私は今、これが唯一の基本とダイジェスト認証のためではなく、Windowsの認証(NTLM)の作品

xmlhttp.open('POST', url, true, username, password); 

に二行目を変更してcredetntialsの入力を求め取得する必要はありません。私はこの認証方法を使うときには問題ない401の応答をサーバから得るでしょうが、それ以上の通信は起こりません。

また、 "network.automatic-ntlm-auth.trusted-uris"設定にドメインを追加しようとしましたが、それは役に立ちませんでした。

、サーバーの完全な応答:それが判明

Cache-Control private 
Content-Length 0 
Date Fri, 07 Jul 2017 16:48:22 GMT 
Server Microsoft-IIS/7.5 
WWW-Authenticate Negotiate 
       NTLM 
X-AspNet-Version 2.0.50727 
X-Powered-By ASP.NET 

答えて

0

応答ヘッダーでネゴシエートトラブルメーカーです。サーバー上のWindows認証プロバイダをNeogotiateではなくNTLMに変更すると、NTLMが動作します。

しかし、サーバーにアクセスできない場合は、さらに処理する前に、クライアント側の応答ヘッダーを何らかの形で変更する必要があります(WWW-Authenticateからのネゴシエーションを削除してください)。

関連する問題