|
.NET TIPS ユーザーのセキュリティ権限を確認するには?(基本編)デジタルアドバンテージ 一色 政彦2005/09/02 |
![]() |
|
|
|
Windowsアプリケーションやコンソール・アプリケーションなどのWindows OS上で実行されるアプリケーションでは、セキュリティやアプリケーション機能の実行権限などの問題で、アプリケーションを実行するユーザーのセキュリティ権限をチェックしたい場合がある。例えば、Administrators権限を持っている(=Administratorsグループに所属している)ユーザーだけに、アプリケーションの実行を制限したいようなケースだ。
そのような場合には、.NET Frameworkに用意されているロールベース・セキュリティ機能を活用すればよい。ロールベース・セキュリティとは、Windows OSにログオンしているユーザーのアイデンティティとそれに割り当てられたロール(権限)に基づいたセキュリティ機能のことである(ちなみに、プログラム・コードに基づいたセキュリティ機能として、コード・アクセス・セキュリティがある)。
ロールベース・セキュリティを利用するには、Threadクラス(System.Threading名前空間)の静的プロパティであるCurrentPrincipalプロパティからWindowsPrincipalオブジェクトを取得すればよい。ただしこのプロパティの値は、IPrincipalインターフェイス(System.Security.Principal名前空間)のオブジェクトとして取得されるので、WindowsPrincipalクラス(System.Security.Principal名前空間)のオブジェクトへキャストする必要がある。
このWindowsPrincipalオブジェクトは、現在のスレッドに対して割り当てられているプリンシパル(=アイデンティティとロールを結びつけたもの)を表し、要するにこのオブジェクトからロールベースのセキュリティ情報(例えば、ユーザー名やAdministrators権限の有無など)を取得できるのである。このセキュリティ情報を基に、適切なセキュリティ検証処理などを行えばよい。
以上のロールベース・セキュリティの活用を実際に実装しているのが、次のサンプル・プログラムである。このサンプル・プログラムでは、WindowsPrincipalオブジェクトの取得後、そのIdentityプロパティ(=アイデンティティ情報)やIsInRoleメソッド(=ロールへの所属の有無、権限の有無の情報)を使ってロールベース・セキュリティ情報を活用している。
|
||
| ロールベース・セキュリティを実装したコンソール・アプリケーションのサンプル・プログラム(上:C#、下:VB.NET) |
上記のソース・コードで注目していただきたいのは、アプリケーション実行の最初に呼び出している「AppDomain.CurrentDomain.SetPrincipalPolicy)」という一文である。これは現在のアプリケーション・ドメインのオブジェクトに対してプリンシパル(=WindowsPrincipalオブジェクト)を設定しているわけである。実はデフォルトの状態ではスレッドに対するWindowsPrincipalオブジェクトのプリンシパルが作成されないので、これを事前に行わないとスレッドからプリンシパルを取得する際にエラーになってしまうのだ。
そのほかのコードは難しくないので、詳細な説明は割愛する。以下が上記のサンプル・プログラムの実行結果である。
|
|
| サンプル・プログラム(コンソール・アプリケーション)の実行結果 |
以上がロールベース・セキュリティの情報を活用するための基本的な手法だ。現在のスレッドからプリンシパルを取得できるので、特に複数のコード個所で繰り返しセキュリティ検証を行う場合には便利である。
難点としては、事前にアプリケーション・ドメインに対してプリンシパルを設定する必要があることだ。1回しかセキュリティ検証を行わないような場合(例えば、起動時にのみAdministrators権限のチェックをしたい場合など)には、実はもっと手軽な方法が用意されている。これについては「TIPS:ユーザーのセキュリティ権限を簡単に確認するには?(応用編)」で紹介する。![]()
| カテゴリ:クラス・ライブラリ 処理対象:セキュリティ 使用ライブラリ:Threadクラス(System.Threading名前空間) 使用ライブラリ:IPrincipalインターフェイス(System.Security.Principal名前空間) 使用ライブラリ:WindowsPrincipalクラス(System.Security.Principal名前空間) 関連TIPS:ユーザーのセキュリティ権限を簡単に確認するには?(応用編) |
|
||||||||||||
| 「.NET TIPS」 |
TechTargetジャパン
- Kinectが切り開く“夢の近未来” (2012/2/2)
日本を含めた世界中でKinect for Windowsセンサー商用版とSDK正式版がリリース。未来のコンピューティングはどう変化するのか? - 3つの視点でネイティブと.NETの適材適所を考察 (2012/1/31)
アプリ開発は「ネイティブ」と「.NET」、どちらが最良? その問いには「適材適所」と答えるしかない。では、“適所”は一体どこかを考察する - SQL Azure Data Sync入門 (2012/1/30)
SQL Azure/SQL Serverデータベース間のデータ同期を簡単に実現するサービスとは? その仕組みや使用手順を解説 - Windows Phoneアプリ市場の現状を分析する (2012/1/27)
Windows Phone のアプリ・ストアに日々登録されている多種多様なアプリ。カテゴリ別のアプリ数は? 市場の現状を明らかにする
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -


