連載
|
|
|
■ルールベース認定機能の利用手順
まず「The Enterprise Library Configuration Console」(以下Configurationコンソール)でSecurityABの構成を設定する。
●ConfigurationコンソールでのSecurityABの追加
SecurityABをアプリケーションで利用するためには、ConfigurationコンソールでSecurityABの構成管理設定を行っておく必要がある。
●Rule Expression Editorを使ったルール設定
次にRule Expression Editorを使って任意のタスクに対する認可ルールを設定してやる必要がある。
Rule Expression Editorダイアログを表示するには、Configurationコンソールで「SampleRule」ノードのExpressionプロパティ選択時に表示される[...]ボタンをクリックすればよい。
Rule Expression Editorでのルール設定 | ||||||
Rule Expression Editorを表示するには、Configurationコンソールで「SampleRule」ノードのExpressionプロパティを選択している際に表示される[...]ボタンをクリックする。 | ||||||
|
●「Security Application Block」配下の各ノードにおけるプロパティ設定
以下の表は、Configurationコンソールにおける各ノードのプロパティ設定例である。
ノード | プロパティ | 設定値 | |||
Security Application Block | Default Authorization Instance |
RuleProvider | |||
DefaultSecurity Cache Instance |
(なし) | ||||
Name | Security Application Block | ||||
Authorization | Name | Authorization | |||
RuleProvider | Name | RuleProvider | |||
SampleRule | Expression | R:Manager OR R:Developer | |||
Name | SampleRule | ||||
Security Application Block配下の各ノードのプロパティ設定例 | |||||
表中の太字の個所がデフォルト設定を変更した設定値である。 |
ここまでに完成した内容は、「App.config」(アプリケーション構成ファイル)として、この内容を利用するアプリケーションの(Visual Studioの)プロジェクト・フォルダに保存する(メニューの[File]−[Save Application]を実行)。
以上でSecurityABのルールベース機能を使う準備が整った。次に実際にこれを使ってみることにしよう。
●ルールベース認可処理を実行する
以下は、プログラムを実行しようとしているユーザーがDeveloperロールに所属しているユーザーであるかどうかを判定し、結果をコンソール画面に表示するためのサンプル・プログラムである。
|
|
SecurityABを使用したサンプル・プログラム(C#) | |
なおこのサンプル・プログラムを実行するには、以下のアセンブリを参照設定に追加する必要がある。これらのアセンブリはEntLibをインストールしたディレクトリ(筆者の環境では「C:\Program Files\Microsoft Enterprise Library January 2006\bin」)に配置されている。 | |
・Microsoft.Practices.EnterpriseLibrary.Common.dll ・Microsoft.Practices.EnterpriseLibrary.Security.dll |
このサンプル・プログラムでは事前準備として、AppDomainクラスのSetPrincipalPolicyメソッドを呼び出すことでWindowsPrincipalオブジェクトを生成して実行ユーザーを取得できるようにし、次に実行ユーザーとDeveloperロールとをひも付けるGenericPrincipalオブジェクトを生成している。
Configurationコンソールで“R:Manager OR R:Developer”と設定しているため、実行ユーザーは認可される(つまりAuthorizeメソッドの戻り値としてtrueが返却される)のである。
ここまで解説してきたように、SecurityABが提供するルールベースの認可機能とは、
「Rule Expression Editorを使って認可するためのルールを定義し、
実行ユーザーがそのルールに適応するかどうかを判定する機能」
なのである。
■AzManを活用した認定機能の利用方法
いま説明したAuthorization Rule Providerによるルールベースの認定機能は導入が手軽である半面、ルール情報をアプリケーション構成ファイル(WindowsアプリケーションならApp.config、WebアプリケーションならWeb.config)にしか保持できない。
しかし実際の業務アプリケーションでは、ユーザーとロールとのマッピング情報などはデータベース上に保持したりすることが多いだろう。
先に解説したASP.NET 2.0標準のロール管理機能を使えば、マッピング情報を保持する格納ストレージとしてSQL ServerやActive Directoryを利用することができるのだが、このロール管理機能はあくまでASP.NET 2.0を利用したWebアプリケーションが対象になる。
このため、例えば上記サンプル・プログラムのようなコンソール・アプリケーションやWindowsアプリケーションまでが対象になっているわけではない。その場合はこのAzMan Authorization Provider(以下AzMan Provider)を利用した認定機能が有力な候補となるだろう。
AzManとは、Windows Server 2003のSP1以降に付属しているロール、タスク、操作、およびユーザーを管理するための管理ツールのことであり、ロール情報をXMLファイル、Active Directory、またはActive Directory Application Mode(ADAM)ストアで管理することができる。
AzManはMMC(Microsoft Management Console)スナップインであるため、ロールやタスクの管理には専用のコンソールを利用できるようになっている。それではAzMan Providerを利用する前に、AzManの設定手順について解説する。
●Authorization Managerの設定
AzMan Providerを利用できるようにするには、(開発したアプリケーションの実行環境となる)OSごとにいくつかのやり方がある。
-
Windows Server 2003の場合:
→Windows Server 2003 SP1以降であればデフォルトで利用可能。 -
Windows XP Professionalの場合:
→Windows Server 2003 Administration Tools Packをインストールする必要がある。
→AzMan COMオブジェクト用のプライマリ相互運用アセンブリ(PIA:Primary Interop Assembly)をGAC(グローバル・アセンブリ・キャッシュ)にインストールする必要がある*2。 -
Windows 2000 Server SP4以降の場合:
→Windows 2000 Authorization Manager Runtimeをインストールする必要がある。
→AzMan COMオブジェクト用のプライマリ相互運用アセンブリをGAC(グローバル・アセンブリ・キャッシュ)にインストールする必要がある*2。
*2 AzMan COMオブジェクト用のプライマリ相互運用アセンブリをインストールするには、Windows 2000 Authorization Manager Runtime(上述の「Windows 2000 Server SP4以降の場合」にインストールするものと同じ)をダウンロードし、その実行ファイル(筆者が試した環境では「Windows(R) 2000 Authorization Manager Runtime.exe」ファイル)を実行する。これにより、「Windows(R) 2000 Authorization Manager Runtime」というフォルダが新規作成され、さらにそのフォルダ内にある「PIA\1.2」フォルダに「Microsoft.Interop.Security.AzRoles.dll」(=AzManバージョン1.2のプライマリ相互運用アセンブリ)が配置されている。ここで、コントロール・パネルの[管理ツール]−[Microsoft .NET Framework 2.0 Configuration]を実行して.NET Framework 2.0用の構成ツールを起動して、左側のツリー・コントロールで[Console Root]−[.NET Framework 2.0 Configuration]−[マイ コンピュータ]−[アセンブリ キャッシュ]を選択し、右側のHTML表示の中から[アセンブリ キャッシュへのアセンブリの追加]というリンクをクリックする。[アセンブリの追加]という名前のファイル選択ダイアログが表示されるので、先ほどのMicrosoft.Interop.Security.AzRoles.dllファイルを選択すれば完了だ。 |
OSごとの詳しいインストール手順については以下のURLを参考にするとよいだろう。
AzManのインストールが終わったら、次にAzManポリシー・ストア(=認定に関するポリシー情報を格納する場所)を作成する必要がある。AzManポリシー・ストアはXMLファイル、Active Directory、またはADAM内に作成することが可能であるが、本稿ではXMLファイル内に作成することにする。
INDEX | ||
連載:Enterprise Library概説 | ||
柔軟なセキュリティ機能を実装しよう | ||
1.ASP.NET 2.0セキュリティ機能 | ||
2.ルールベース認定機能の利用方法 | ||
3.AzManを活用した認定機能の利用方法 | ||
「Enterprise Library概説」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|