.NETからActive Directoryにアクセス
ドメイン・サイト関連の情報を見てみる
小山 三智男
mitchin
2
Active Directory ドメイン構造
フォレスト
ドメインツリー
ドメイン
test.loca
l
ドメイン
west.test.local
ドメイン
east.test.loc
al
ドメインツリー
ドメイン
test2.loc...
3
Active Directory サイト構造
サイト
DC1
TokyoSite
DC2
DC3
サイト内複製
サイト
DC5
OsakaSite
DC4
サイト内複製サイト間複製
サイトリンク
サブネット
192.168.0.0/24
1...
サンプルアプリケーション
4
開発環境
• OS:Windows7(x64)
• IDE:Visual Studio 2010 SP1
• アプリ:Windows フォーム(.NET 4 Client Profile)
Web フォーム(.NE...
5
System.DirectoryServicesアセンブリ
• .NETからActive Directoryの色々な情報にアクセスするために
参照する必要があります。
• ドメインやサイト関連はSystem.DirectoryService...
Webアプリは実行環境の準備が必要です
6
当たり前ですが最低でも Web サーバとしての設定が必要です。
IISの設定
アプリケーション プールの追加
Web サイトとアプリケーションの追加と認証の設定
フォルダの設定
物理パスとなるフォルダ...
IISの設定:アプリケーション プールの追加
7
.Net Framework バージョンは 4 を
選択します。
IISの設定:Webサイトの追加
8
先程追加したアプリケーション
プールを選択します。
コンテンツ ディレクトリの物理
パスを選択または入力します。
バインドのホスト名を入力しま
す。
IISの設定:アプリケーションの追加
9
先程追加したWebサイトを
右クリックして「アプリケー
ションの追加」を選択します。
エイリアスを入力します。
物理パスを選択または入力し
ます。
IISの設定:認証の設定
10
先程追加したWebサイトとアプリケーション両方に対して認証を
設定します。(どちらも認証のアイコンをダブルクリック)
統合認証する場合は、Windows 認証を有効にして匿名認証を無効
にします。
フォルダの設定
11
Webサイトで指定した物理パスのフォルダ(WebApp)に対して
アクセス権を設定します。
今回は Windows 認証なので、Users グループに読み取りと実行
のアクセス権があれば特に設定する必要はないです。
Win...
DNSの設定
12
今回は作成した Webサイトで バインドのホスト名を指定したの
で、http://testweb/directory/main.aspx のようにホスト名で
アクセスできるよう DNSを
設定します。
ホスト名は「testw...
13
クライアントも条件付きで設定が・・・
といってもクライアントPCのネットワーク(TCP/IP)の設定で、
DNSサーバのアドレスをドメインコントローラのIPアドレスに
するだけです。
クライアントPCがドメインの
メンバであれば、DNSサ...
サンプルアプリケーションの初期画面
ドメインを取得して画面下部に
接続先を表示しています。
14
15
IISの認証方法による違い
画面上部にログオンユーザを表示して、認証方法による違いを見
てみましょう。
左:Windows 認証
中:匿名認証(NETWORK SERVICE)
右:匿名認証(IUSER)
Windows 認証では「ドメイ...
ドメイン関連情報画面
16
17
Domain オブジェクトの取得方法
クラスライブラリ側に Active Directory のオブジェクトにアクセスするため
の静的メソッド・プロパティを提供する DirectoryAccess クラスを作成して、
そこに Domain...
18
クライアントの設定ができてないと・・・
Domain オブジェクトを取得できず、例外が発生します。
前ページの GetDomain メソッドの内部実装が
1. Domain.GetComputerDomain メソッドの場合の例外とメッセ...
主なクラス・プロパティ
Domain.Forest プロパティ(フォレスト)
Forest クラス(フォレスト)
Name プロパティ(フォレストの名前)
ForestMode プロパティ(フォレストの操作モード)
RootDomain プロパ...
主なクラス・プロパティ
GlobalCatalog クラス(グローバル カタログ サーバ:グローバル カタログ
の
レプリカをホストするドメイン コントローラ)
20
主なクラス・プロパティ
ActiveDirectorySite クラス(速度とコストの点で接続状況が良好な一連のド
メ
イン コントローラを定義し、1つ以上の IP サブネットのセットで構成され
る)
Servers プロパティ(サイト内のディ...
主なクラス・プロパティ
ActiveDirectorySiteLink クラス(複製を目的として、均一のコストで特定の
トランスポートを経由した通信をスケジュールできる複数のサイトの集合)
Cost プロパティ(サイトリンクのコスト)
Repl...
主なクラス・プロパティ
Domain クラス(Active Directory ドメイン)
Name プロパティ(ドメイン名)
DomainMode プロパティ(ドメインの動作モード)
DomainControllers プロパティ(ドメイン内...
主なクラス・プロパティ
DomainController クラス(ドメイン コントローラ)
Name プロパティ(ドメイン コントローラ名)
OSVersion プロパティ(OS)
IPAddress プロパティ(IPアドレス)
SiteNam...
Upcoming SlideShare
Loading in...5
×

.NETからActive Directoryにアクセス

1,482

Published on

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,482
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
12
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

.NETからActive Directoryにアクセス

  1. 1. .NETからActive Directoryにアクセス ドメイン・サイト関連の情報を見てみる 小山 三智男 mitchin
  2. 2. 2 Active Directory ドメイン構造 フォレスト ドメインツリー ドメイン test.loca l ドメイン west.test.local ドメイン east.test.loc al ドメインツリー ドメイン test2.loca l ドメイン sub.test2.local
  3. 3. 3 Active Directory サイト構造 サイト DC1 TokyoSite DC2 DC3 サイト内複製 サイト DC5 OsakaSite DC4 サイト内複製サイト間複製 サイトリンク サブネット 192.168.0.0/24 192.168.1.0/24 192.168.2.0/24 サブネット 172.16.0.0/24 172.16.1.0/24 Tokyo-OsakaLink
  4. 4. サンプルアプリケーション 4 開発環境 • OS:Windows7(x64) • IDE:Visual Studio 2010 SP1 • アプリ:Windows フォーム(.NET 4 Client Profile) Web フォーム(.NET 4) クラスライブラリ(.NET 4 Client Profile) 実行環境 • 単一ドメイン、単一サイト、単一サブネット • サーバ:Windows Server 2008 Standard SP1 (.NET 4) • クライアント:Windows XP SP3 (.NET 4 Client Profile) • IIS:Windows 認証
  5. 5. 5 System.DirectoryServicesアセンブリ • .NETからActive Directoryの色々な情報にアクセスするために 参照する必要があります。 • ドメインやサイト関連はSystem.DirectoryServices. ActiveDirectory名前空間にそれらを表すクラスがあり、 Active Directoryの管理タスクを自動化するために使用されま す。 • Active Directory内のデータにアクセスするために使用される のは System.DirectoryServices名前空間で、オブジェクトを カプセル化する DirectoryEntryクラスや クエリを実行する DirectorySearcherクラスなどがあります。
  6. 6. Webアプリは実行環境の準備が必要です 6 当たり前ですが最低でも Web サーバとしての設定が必要です。 IISの設定 アプリケーション プールの追加 Web サイトとアプリケーションの追加と認証の設定 フォルダの設定 物理パスとなるフォルダの作成とアクセス権の設定 今回の実行環境では次の設定もしました。 DNSの設定 エイリアスの追加 ※IISで Default Web Site とポートが同じため
  7. 7. IISの設定:アプリケーション プールの追加 7 .Net Framework バージョンは 4 を 選択します。
  8. 8. IISの設定:Webサイトの追加 8 先程追加したアプリケーション プールを選択します。 コンテンツ ディレクトリの物理 パスを選択または入力します。 バインドのホスト名を入力しま す。
  9. 9. IISの設定:アプリケーションの追加 9 先程追加したWebサイトを 右クリックして「アプリケー ションの追加」を選択します。 エイリアスを入力します。 物理パスを選択または入力し ます。
  10. 10. IISの設定:認証の設定 10 先程追加したWebサイトとアプリケーション両方に対して認証を 設定します。(どちらも認証のアイコンをダブルクリック) 統合認証する場合は、Windows 認証を有効にして匿名認証を無効 にします。
  11. 11. フォルダの設定 11 Webサイトで指定した物理パスのフォルダ(WebApp)に対して アクセス権を設定します。 今回は Windows 認証なので、Users グループに読み取りと実行 のアクセス権があれば特に設定する必要はないです。 Windows 認証ではない場合、通常はアプリケーション プールで 指定したアカウント(通常は NetworkService グループ)に適切 なアクセス権を設定します。
  12. 12. DNSの設定 12 今回は作成した Webサイトで バインドのホスト名を指定したの で、http://testweb/directory/main.aspx のようにホスト名で アクセスできるよう DNSを 設定します。 ホスト名は「testweb」なので サーバのエイリアスとして 「testweb」をゾーンに追加 します。
  13. 13. 13 クライアントも条件付きで設定が・・・ といってもクライアントPCのネットワーク(TCP/IP)の設定で、 DNSサーバのアドレスをドメインコントローラのIPアドレスに するだけです。 クライアントPCがドメインの メンバであれば、DNSサーバの アドレスはドメインコントロー ラのIPアドレスになっている はずです。(管理者がちゃんと 設定していれば) これでドメインオブジェクトを 取得できます。
  14. 14. サンプルアプリケーションの初期画面 ドメインを取得して画面下部に 接続先を表示しています。 14
  15. 15. 15 IISの認証方法による違い 画面上部にログオンユーザを表示して、認証方法による違いを見 てみましょう。 左:Windows 認証 中:匿名認証(NETWORK SERVICE) 右:匿名認証(IUSER) Windows 認証では「ドメイン名ユーザ名」が表示されます。
  16. 16. ドメイン関連情報画面 16
  17. 17. 17 Domain オブジェクトの取得方法 クラスライブラリ側に Active Directory のオブジェクトにアクセスするため の静的メソッド・プロパティを提供する DirectoryAccess クラスを作成して、 そこに Domain オブジェクトを取得するメソッドを追加します。 VB Public Shared Function GetDomain() As Domain Return Domain.GetComputerDomain() End Function C# public static Domain GetDomain() { return Domain.GetComputerDomain(); } 環境や条件などに合わせて内部実装を Domain.GetCurrentDomain メソッドや Domain.GetDomain メソッドで取得するようにします。
  18. 18. 18 クライアントの設定ができてないと・・・ Domain オブジェクトを取得できず、例外が発生します。 前ページの GetDomain メソッドの内部実装が 1. Domain.GetComputerDomain メソッドの場合の例外とメッセージの例 ActiveDirectoryObjectNotFoundException ローカル コンピューターがドメインに参加していないか、ドメインが接 続不可能です。 2. Domain.GetCurrentDomain メソッドの場合の例外とメッセージの例 ActiveDirectoryOperationException 現在のセキュリティ コンテキストは、Active Directory ドメインまたは フォレストに関連付けられていません。 3. Domain.GetDomain メソッドの場合の例外とメッセージの例 2. と同じあるいは ActiveDirectoryServerDownException サーバーは使用可能ではありません。 名前: “virtual.proceed.local"
  19. 19. 主なクラス・プロパティ Domain.Forest プロパティ(フォレスト) Forest クラス(フォレスト) Name プロパティ(フォレストの名前) ForestMode プロパティ(フォレストの操作モード) RootDomain プロパティ(フォレスト内で作成された最初のドメイン) GlobalCatalogs プロパティ(フォレスト内のすべてのグローバル カタログ) Domains プロパティ(フォレスト内のすべてのドメイン) Sites プロパティ(フォレスト内のすべてのサイト) SchemaRoleOwner プロパティ(FSMO スキーママスタ) NamingRoleOwner プロパティ(FSMO ドメイン名前付けマスタ) 19
  20. 20. 主なクラス・プロパティ GlobalCatalog クラス(グローバル カタログ サーバ:グローバル カタログ の レプリカをホストするドメイン コントローラ) 20
  21. 21. 主なクラス・プロパティ ActiveDirectorySite クラス(速度とコストの点で接続状況が良好な一連のド メ イン コントローラを定義し、1つ以上の IP サブネットのセットで構成され る) Servers プロパティ(サイト内のディレクトリ サーバ) Subnets プロパティ(サイト内のサブネット) SiteLinks プロパティ(このサイトに含まれるサイト リンク) ActiveDirectorySubnet クラス(フォレストのサブネット) 21
  22. 22. 主なクラス・プロパティ ActiveDirectorySiteLink クラス(複製を目的として、均一のコストで特定の トランスポートを経由した通信をスケジュールできる複数のサイトの集合) Cost プロパティ(サイトリンクのコスト) ReplicationInterval プロパティ(サイト間の複製の間隔) TransportType プロパティ(サイト リンクのトランスポート タイプ) 22
  23. 23. 主なクラス・プロパティ Domain クラス(Active Directory ドメイン) Name プロパティ(ドメイン名) DomainMode プロパティ(ドメインの動作モード) DomainControllers プロパティ(ドメイン内のドメイン コントローラ) RidRoleOwner プロパティ(FSMO RID プールマスタ) PdcRoleOwner プロパティ(FSMO PDC エミュレータ) InfrastructureRoleOwner プロパティ(FSMO インフラストラクチャマスタ) 23
  24. 24. 主なクラス・プロパティ DomainController クラス(ドメイン コントローラ) Name プロパティ(ドメイン コントローラ名) OSVersion プロパティ(OS) IPAddress プロパティ(IPアドレス) SiteName プロパティ(所属しているサイトの名前) Domain プロパティ(所属しているドメイン) Forest プロパティ(所属しているフォレスト) ブログにも書いてます。 http://blogs.wankuma.com/mitchin/ 24
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×