Windows の認証方法とプロトコルを検索した結果、単純な実行可能ファイルで使用される Negotiate、Kerberos、および NTLM の正確な違いを理解してから、IIS と Web 認証を使用することにしました。
良い結果が得られましたが、Negotiate と Kerberos についてはまだ詳細が必要です。
次のシナリオがあります。
メッセージボックスに次の値を表示する、非常に単純な C# Windows フォームアプリケーションを作成しました。
System.Security.Principal.WindowsIdentity.GetCurrent().AuthenticationType
私はローカル マシンの管理者権限を持つドメイン ユーザーであることに注意してください。次の結果が得られました。
DCにアクティブに接続しているときにexeファイルを実行(ダブルクリック)すると、「ネゴシエート」が表示されました。
DCにアクティブに接続しているときにexeファイルを実行すると(differnetユーザーとして/ローカルユーザーを使用して実行)、「NTLM」が発生しました。
「管理者として実行」または「別のユーザーとして実行」を使用してexeファイルを実行すると、「Kerberos」が発生しました。
ローカルアカウントを使用してローカルにログインしているときにexeファイルを実行すると、「NTLM」が表示されます。
LSA がローカル アカウントにNTLMを使用することを理解しています。また、Active Directory がKerberosを使用してドメイン ユーザーとコンピューターを認証することも理解しています。
私の質問は、(ダブルクリック)、または同じアカウントを使用して「別のユーザーとして実行」することにより、アカウントを使用してexeを実行すると、ネゴシエート認証タイプを取得するのはなぜですか?
更新:次のことに気付きました:
-ローカルユーザーがexeを実行している場合、それはNTLM
です
-ドメインユーザーがexeを実行している場合、それはネゴシエート(そのユーザーがローカル管理者である場合)ですが、Kerberos(そのユーザーがローカル管理者でない場合)です)
-ドメイン管理者が exe を実行する場合、それはKerberosです
この動作について説明します。