09/08 MS-ON : ロールベースセキュリティに関する宿題事項の回答


こんにちは。

09/08 に大森にて実施した MS-ON 出張ワークショップで、Principal を使った実装に関し、デモでうまく動作せず動作をお見せできなかった実装箇所について、以下、確認した結果を記載致します。(当日はデモをお見せできず申し訳ありません。)

該当のコード箇所ですが、自身のマシンのロールの場合、下記の通り、マシン名を記載せず ([マシン名]Administrators とせずに) 以下の通り記載することで、ロールチェックを正しくおこないました。
下記の通り記載すれば、PCにキャッシュされたドメインユーザでログインをおこなっても(ドメインサーバに接続していなくても)、そのマシンのロールは正しくチェックされました。

IPrincipal prin; // Principal オブジェクト

// Principal オブジェクトに、現在のユーザーの Windows アカウントをマップする
AppDomain.CurrentDomain.SetPrincipalPolicy( PrincipalPolicy.WindowsPrincipal );

// 現在の Principal の参照
prin = Thread.CurrentPrincipal;

// Principal の確認
if(!prin.IsInRole("Administrators") )
  return false;

ただし、一点だけ課題は残っています。
デモでご覧頂いた通り、標準で組み込まれているWindows のPrincipal チェックをドメインサーバに接続していない状態で、ドメインのロールでチェックした場合は、アプリケーションエラーとなってしまいます。ですので、実開発の使用に際してもしこのリカバリをコードで実施する必要がある場合は、自身で、この確認をおこなう特別なコードが必要となってしまう点、ご注意ください。

 


Comments (0)

Skip to main content