IISサイトがNTLMまたはKerberosを使用しているかどうかを確認するにはどうすればよいですか?


10

IISサイトがNTLMまたはKerberosを使用しているかどうかを確認するにはどうすればよいですか?また、認証をKerberosからNTLMに変更するにはどうすればよいですか?IIS 7.5を使用しています。

回答:


9

から:

HTTP認証がNTLMまたはKerberosであるかどうかを確認する
http://support.microsoft.com/kb/891032

[...]「このトレースを調べて、クライアントが認証情報を送信しているかどうかを確認しているので、TCPセグメントを使用して、HTTP GET要求とサーバーからの応答を追跡できます。これは、フレームのスニペットです。クライアントから認証情報を送信します。

23 4294967263.4294641621 LOCAL 00045A420DBC HTTP GET要求(ポート3135を使用するクライアントから)192.168.0.2 192.168.0.4 IP HTTP:GET要求(ポート3135を使用するクライアントから)HTTP:要求メソッド= GET HTTP:Uniform Resource Identifier = /webapplication1/webform1.aspx HTTP:プロトコルバージョン= HTTP / 1.1 HTTP:Accept = image / gif、image / x-xbitmap、image / jpeg、image / pjpeg、application / vnd。HTTP:Accept-Language = en-us HTTP:Accept-Encoding = gzip、deflate HTTP:User-Agent = Mozilla / 4.0(compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR HTTP:Host = alien HTTP:Connection =キープアライブHTTP:承認= TlRMTVNTUAABAAAAB4IIogAAAAAAAAAAAAAAAAAAAAAFASgKAAAA 44 77 3D 3D 0D 0A 0D 0A AAADw == ....

「これは何を示していますか?Authorizationヘッダーが "Negotiate"に設定されており、そのヘッダーで送信された長い文字列を確認できます。この応答は、クライアントとサーバーがNTLM接続をネゴシエートしていることを示しています。最初の文字が「T」であるため、NTLM認証がここで使用されていることがわかります。「Y」の場合は、Kerberosになります。ヘッダーは、「NTLM」ではなく「Negotiate」に設定されます。これは、つまり、KerberosまたはNTLMを使用しますが、認証方法を "ネゴシエート"し、可能であればKerberosを最初に試行します。Kerberosを使用できない場合は、NTLMを使用します。 "

// if it is Negotiate...
if (String.Compare(Request.ServerVariables["HTTP_AUTHORIZATION"].Substring(10, 1), "Y", true) == 0)
{
    // we are using Kerberos
}
else
{
   // we are using NTLM
}

最初の文字をoXcwとして取得していますが、それが何を意味するのでしょうか?たぶん新しいバージョンのkerberos?
マークアダムソン2017

1
@MarkAdamson私も、私はoYG2です...
Brain2000

4

IISサーバーにアクセスできる場合、答えはHTTPトラフィックを検査するよりもはるかに簡単です。Windows認証のサイト認証モジュール構成を表示するだけです。

  1. IISマネージャー
  2. サイトを選択してください
  3. 認証モジュールをクリックします
  4. Windows認証を選択
  5. プロバイダーを選択...

IISマネージャー>サイト>認証モジュール>プロバイダー


1

html / aspページで以下のコードを使用します。

<%
    authType=UCase(Request.ServerVariables("AUTH_TYPE"))
    authHeader=Request.ServerVariables("HTTP_AUTHORIZATION")
    response.write " Authentication Method : " & authType & "<BR>"
    LenAuthHeader = len(authHeader)
    response.write " Protocol : "
    if Len(authType ) =0 then response.write " Anonymous" else if authType<>"NEGOTIATE" then response.write authType else if LenAuthHeader>1000 then response.write "Kerberos" else response.write "NTLM"
%> 

0

その答えは完全ではありません。接続でNTLMを使用する方法は2つあります。1つは、WWW-Authenticateメソッド「NTLM」を使用する方法です。もう1つはネゴシエート経由です。NegotiateはGSSAPIを使用しており、GSSAPIはさまざまなメカニズムを使用できます。Windowsでは、これにはKerberosとNTLMの両方が含まれます。

Wiresharkはこれらすべてをデコードし、TLSを使用していない場合、何が起こっているかをすばやく表示できます。そうであれば、WiresharkがTLSトラフィックを復号化できるように手配できます。少し手間がかかります。


0

HTTPリクエストヘッダー(FirebugChrome Dev Tool、またはFiddlerから確認できます)に、NTLMを使用している場合は次のように表示されます

認証:NTLM = TlRMTVNTGD6XAAAAGAAYAG425qAAYABgAhgAAAAAAAABIAAAADgAOAEgAAAAYABgAVgAAAAAAAACeAAAABYKIogUBKAoAAAAPcwBpAG0AcABsAGkAcABOADMAUgBXAEsAVwBBAEwAVABFAFIAQQAzVtleqNj7HAAAAAAAAAAAAAAAAAAAAACW3g66aPaiileWScIYweBj6fs2iGY / TA3 =

IIS管理パネルから、[認証]に移動して、好みの認証を選択できます。


ネゴシエートがNTLMを使用している場合は不可
アードバーク2014
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.