-1

ASP.NETを使用して、アプリケーションのクライアント マシンが接続されているドメイン コントローラーを取得しようとしていますC#

このアプリケーションは、インターネットに公開されることのないイントラネット アプリケーションであり、アプリケーションを使用するすべてのユーザーは Windows で認証される必要があります。したがって、これは、ユーザーが常に企業ネットワーク内のドメイン コントローラーに接続されることを意味します。

次のコードを使用してみましたが、IIS サーバーが接続されているドメイン コントローラーが返されます。

using System.DirectoryServices;

public static string GetDC()
{
    DirectoryEntry Entry = new DirectoryEntry("LDAP://rootDSE");
    return Entry.Properties["dnsHostname"].Value.ToString();
}

すべてが IIS サーバー ドメイン コントローラーを生成しているように見えるという問題について、他にもいくつかの質問を読みました。

私の質問は、ドメイン コントローラーに接続されたクライアントを取得できるかどうかです。

4

1 に答える 1

1

Active Directory 認証に関するいくつかの事項:

  • ユーザーはドメイン コントローラーに接続しません。Active Directory に対して認証されます。Active Directory は、相互に情報をレプリケートする 1 つまたは複数のドメイン コントローラーによってホストされる分散サービスです。
  • ユーザーが Web アプリケーションによって認証される場合、認証を実行するのは IIS です。401 チャレンジが発行され、ユーザーのマシンは資格情報をトークンの形式で提供します。次に、IIS はそのトークンを使用して、ユーザーの認証、承認、および識別を行います。
  • Windows 認証によって認証された Web アプリケーション ユーザーは、サーバー上で WindowsIdentity オブジェクトによって表されます。WindowsIdentity オブジェクトに含まれるプロパティはほとんどなく、基になる AD 情報 (ドメイン/ユーザー名以外) を公開するものはありません。
  • クライアント側のコード (別名 javascript) は、マシン上の機密 AD 情報にアクセスできません。もしそうなら、それは非常に悪いでしょう。

AD で認証がどのように機能するかについて詳しく知りたい場合は、 https ://technet.microsoft.com/en-us/library/cc780332(v=ws.10).aspx を参照してください。

ユーザーが異なるドメインにいる場合、ユーザーのユーザー名からドメインを取得し、それを使用して AD ルックアップを実行できます。

string userNameWithDomain = HttpContext.Current.User.Identity.Name; // returns SOMEDOMAIN\USERNAME

「\」で分割し、最初の要素を取ります。

于 2015-09-30T13:26:27.053 に答える