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