次の方法で共有


ロールベース セキュリティの技術サンプル

更新 : 2007 年 11 月

このサンプルでは、ロール ベース セキュリティの使用例を示します。サーバー アプリケーションは、クライアント アプリケーションで使用されているユーザー アカウントと、このアカウントが管理者のロールに属しているかどうかを報告します。

サンプルの使用については、次のトピックを参照してください。

コマンド プロンプトを使用してサンプルをビルドするには

  1. コマンド プロンプト ウィンドウを開き、RoleBasedSecurity ディレクトリ内の言語固有のサブディレクトリのいずれかに移動します。

  2. この言語固有のサブディレクトリから、使用しているプログラミング言語に応じて、「msbuild RoleBasedSecurityCS.sln」または「msbuild RoleBasedSecurityVB.sln」と入力します。

Visual Studio を使用してサンプルをビルドするには

  1. Windows エクスプローラを開き、RoleBasedSecurity ディレクトリにある、言語固有のサブディレクトリのいずれかに移動します。

  2. 使用しているプログラミング言語に応じて、RoleBasedSecurityCS.sln または RoleBasedSecurityVB.sln をダブルクリックし、そのファイルを Visual Studio で開きます。

  3. [ビルド] メニューの [ソリューションのビルド] をクリックします。

サンプルを実行するには

  1. コマンド プロンプトまたは Windows エクスプローラを使用して、新しい実行可能ファイルが格納されているディレクトリに移動します。

  2. コマンド ラインで「RBSecDemo.exe」と入力するか、Windows エクスプローラで RBSecDemo.exe ファイルのアイコンをダブルクリックして起動します。

  3. [Display Logged On User] ボタンをクリックします。現在ログオンしているユーザーのアカウント名が、アプリケーション ウィンドウに表示されます。次に、[Is Caller in Demo Role?] ボタンをクリックします。"You ARE in RBSecurityDemoRole" というメッセージが表示されます。

  4. [スタート] ボタンをクリックし、[管理ツール] をポイントし、[コンポーネント サービス] をクリックして、コンポーネント サービス管理ツール (別名、COM+ エクスプローラ) を起動します。COM+ エクスプローラの左ペインで、コンポーネント サービス\コンピュータ\マイ コンピュータ\COM+ アプリケーションを展開し、RBSecDemoSvr COM+ アプリケーションを探します。次に、RBSecDemoSvr アプリケーションのアイコンを右クリックし、[プロパティ] をクリックします。アプリケーションに対応するプロパティ ダイアログ ボックスが表示されます。[セキュリティ] タブをクリックします。このページに表示される情報は、ApplicationAccessControlAttribute で指定した設定に対応しています。[Enforce access checks for this application] チェック ボックスをオフにします。

    9acz169h.alert_caution(ja-jp,VS.90).gif重要 :

      この操作を行うと、アプリケーションに含まれているすべてのコンポーネントで COM+ セキュリティが無効になります。

    [OK] をクリックして、プロパティ ダイアログ ボックスを閉じます。

  5. RBSecDemo クライアント アプリケーションに戻ります。[Display Logged On User] をクリックします。"Unknown caller (Security is not enabled)" というメッセージが表示されます。[Is Caller in Demo Role?] をクリックします。クライアント アプリケーションで報告されるユーザーのロールは、依然として RBSecurityDemoRole です。これは、セキュリティが無効な場合に IsCallerInRole を呼び出すと、必ず true が戻るためです。

  6. COM+ エクスプローラに戻り、アプリケーション アイコンを右クリックし、[プロパティ] をクリックして、[RBSecDemoSvr] プロパティ ページをもう一度開きます。[セキュリティ] タブをクリックし、[Enforce access checks for this application] チェック ボックスをオンに戻します。アプリケーションのセキュリティ機能が再び有効になります。[OK] をクリックして、プロパティ ダイアログ ボックスを閉じます。

  7. "RBSecDemoSvr\Components" を展開し、Microsoft.Samples.Technologies.ComponentServices.RoleBasedSecurity.RBSecurityObject コンポーネントを探します。Microsoft.Samples.Technologies.ComponentServices.RoleBasedSecurity.RBSecurityObject コンポーネントを右クリックし、ポップアップ メニューの [プロパティ] をクリックします。

  8. [セキュリティ] タブをクリックします。ここで表示される承認の設定は、サンプル コードで指定した ComponentAccessControlAttribute に対応しています。コンポーネントに明示的に関連付けられたロールとして、"RBSecurityDemoRole" というロールが表示されます。このロールは、サンプル コードで SecurityRoleAttribute を使用して作成され、サンプル コンポーネントにバインドされたロールです。[OK] をクリックして、プロパティ ダイアログ ボックスを閉じます。

  9. COM+ エクスプローラで、RBSecDemoSvr アプリケーションの下にある [ロール] フォルダを展開します。RBSecurityDemoRole があります。RBSecurityDemoRole\Users を展開します。[ユーザー] フォルダには、アカウントが 1 つだけ ("すべてのユーザー") 表示されています。"すべてのユーザー" を右クリックし、ポップアップ メニューの [削除] をクリックします。表示されるダイアログ ボックスで、削除を了承します。COM+ では、ロールに関連するセキュリティ設定がキャッシュされるため、変更結果を確認するには、RBSecDemoSvr アプリケーションをいったん終了する必要があります。COM+ エクスプローラで、アプリケーションを右クリックし、ポップアップ メニューの [シャットダウン] をクリックします。

  10. RBSecDemo クライアント アプリケーションに戻ります。マウスの左右いずれかのボタンをクリックすると、"アクセスが拒否されました。" と表示された MessageBox が表示されます。これは、RBSecurityDemoRole コンポーネントに現在の呼び出し元ユーザーが含まれていないため、オブジェクト作成時に、アクセス拒否セキュリティ例外がスローされたためです。

サンプルをアンインストールするには

  1. MsBuild ツールを実行したディレクトリ、または Visual Studio で .sln ファイルを起動したディレクトリに移動します。

  2. 使用しているプログラミング言語に応じて、「msbuild RoleBasedSecurityVB.sln /t:Clean」または「msbuild RoleBasedSecurityVB.sln /t:Clean」を実行します。この操作によって /u スイッチ付きで .NET サービス インストール ツール (Regsvcs.exe) および グローバル アセンブリ キャッシュ ツール (Gacutil.exe) が呼び出され、COM+ カタログおよびグローバル アセンブリ キャッシュからサンプル ファイルが削除されます。

必要条件

プラットフォーム : Windows 2000、Windows XP、Windows Server 2003

.NET Framework のバージョン : 2.0

解説

サンプルのバイナリ ファイルを作成する方法およびサンプルを登録する手順については、ソース コード内のコメントを参照してください。

サンプル アプリケーションでは、次の情報を取得できます。

  • COM+ セキュリティが有効になっているかどうか。

  • 現在の呼び出し元が、サンプルによって作成されたセキュリティ ロールのメンバであるかどうか。

  • 現在の呼び出し元のアカウント名。

コンポーネント サービス管理ツールでは、このコンポーネントは Microsoft.Samples.Technologies.ComponentServices.RoleBasedSecurity.RBSecurityObject と表示されます。

9acz169h.alert_note(ja-jp,VS.90).gifメモ :

このサンプルを実行する場合は、その前に、グローバル アセンブリ キャッシュ ツール (Gacutil.exe) を実行して、RBSecDemoSvr.dll のアセンブリをグローバル アセンブリ キャッシュにインストールする必要があります。Gacutil.exe は SDK\<version>\Bin ディレクトリにあります。たとえば、Visual Basic バージョンの場合は、C:\Documents and Settings\Your User Name\My Documents\Samples\Technologies\ComponentServices\RoleBasedSecurity\VB\bin ディレクトリに移動し、「gacutil -i RBSecDemoSvr.dll」と入力します。

このサンプルでは、アプリケーション レベルまたはコンポーネント レベルでセキュリティを有効にし、属性を使用してセキュリティ ロールを作成する方法も示しています。

9acz169h.alert_note(ja-jp,VS.90).gifメモ :

   .NET の COM+ セキュリティ相互運用性は、COM+ 1.0 セキュリティ サービスを使用している既存アプリケーションのマネージ拡張を、アプリケーション開発者が記述できるようにするための機能です。.NET Framework には、独自のロール ベース セキュリティが用意してあります。これら 2 つの機構は独立していますが、1 つのアプリケーションで使用できる機構はいずれか 1 つだけです。

参照

参照

ApplicationAccessControlAttribute

ComponentAccessControlAttribute

ContextUtil

SecurityCallContext

SecurityRoleAttribute

ServicedComponent

System.ComponentModel

System.EnterpriseServices

その他の技術情報

ロール ベース セキュリティ