LightSwitch の認証と承認
LightSwitch では、アプリケーションを承認されていないユーザーを読み取り、変更できない、またはデータを削除すると、より安全にすることができます。認証および承認を実装すると、ユーザーはアプリケーションにアクセスする前にその ID を検証する必要があります。多くのユーザーがある場合は、該当するロールへ特定の画面、データと各ユーザーを再配置へのアクセスのさまざまなレベルを持つメンバーのロールの作成によるアクセスをより簡単に管理できます。
たとえば、給与アプリケーションを使用すると、従業員は自分の給与情報を変更できませんが、表示できます。ただし、給与スーパーバイザーには、従業員の情報を表示および変更するアクセス許可が与えられる可能性があります。従業員には従業員ロールが割り当てられ、スーパーバイザーにはスーパーバイザー ロールが割り当てられます。
また、ユーザーを Active Directory のセキュリティ グループに追加し、それらのグループにアクセス許可を割り当てることによって、より簡単にアクセス許可を管理できます。メンバーシップとアクセス許可は継承されるため、一度の変更で、単一のグループだけでなくすべてのサブグループに対してアクセスの許可と拒否を行うことができます。たとえば、Active Directory の Sales グループに Bob を追加できます。Sales が Marketing のサブグループであれば、Marketing に付与するアクセス権は Bob にも付与されます。
認証
アプリケーションを保護する最初の手順は、認証を有効にすることです。Windows 認証またはフォーム認証を使用できます。フォーム認証は、アプリケーション自体によって管理され、ユーザーは、アプリケーションにアクセスするためにユーザー名とパスワードを入力する必要があります。Windows 認証では、アプリケーションの実行場所であるコンピューターへのログオンに使用された資格情報が、アプリケーション ユーザーの認証に使用されます。追加のユーザー名もパスワードも必要ありません。両方のケースで、アプリケーション管理者は、権限を持つユーザーのリストを保持します。フォーム認証では、この管理者が、暗号化されたパスワードも保持します。
認証を有効にするには
[ソリューション エクスプローラー] では、[プロパティ] のノードのショートカット メニューを開き、[開く] を選択します。
[アプリケーション デザイナー] では、[アクセス制御] のタブをクリックします。
[使用する認証の種類の選択:] の一覧で、[Windows 認証を使用する] か [フォーム認証を使用する] を選択します。
[Windows 認証を使用する] を選択した場合は、[アプリケーションの [ユーザー] 画面で指定されたユーザーのみ許可する] のオプション ボタンや [認証されたすべての Windows ユーザーを許可する] のオプション ボタンを選択します。
これでアプリケーションでは、ユーザーがアプリケーションにアクセスするために資格情報の入力が必要になります。
認証を無効にするには
[ソリューション エクスプローラー] では、[プロパティ] のノードのショートカット メニューを開き、[開く] を選択します。
[アプリケーション デザイナー] では、[アクセス制御] のタブをクリックします。
[使用する認証の種類の選択:] の一覧で、[認証を有効にしない] を選択します。
アプリケーションでは、ユーザーがアプリケーションにアクセスするために資格情報を入力する必要はありません。また、すべてのユーザーがアプリケーションのすべての部分にアクセスできます。
アクセス許可
アプリケーションを保護する次の手順は、アクセス許可を作成することです。画面、コマンド、データ エンティティ、およびクエリのアクセス許可を定義することができます。最初に、アプリケーション デザイナーでアクセス許可オブジェクトを定義します。次に、コード、CanRun<ScreenName>、<QueryName>_CanExecute などの Can メソッドの 1 つでオブジェクトを参照できます。これらのメソッドのコードは、通常、現在のユーザーまたはロールに権限があるかどうかを確認し、その後に、フォームを表示します。または、アクセス許可が検証された場合にのみ、クエリを実行します。
コードをテストするには、アクセス許可を持つユーザーと持たないユーザーの両方としてアプリケーションを実行します。デバッグ アクセス許可を設定すると、アプリケーションをテストまたはデバッグするときに、ユーザーとして実行できます。
アクセス許可を作成するには
[ソリューション エクスプローラー] では、[プロパティ] のノードのショートカット メニューを開き、[開く] を選択します。
[アプリケーション デザイナー] では、[アクセス制御] のタブをクリックします。
[Define permissions or select permissions to use for debugging] グリッドで、[名前] の列で、をクリックし <Add New Permission>、アクセス許可のプログラムの名前を入力します。
名前の先頭はアルファベットの文字である必要があり、名前にはアルファベット文字または数字、またはアンダースコアを含めることができます。
[表示名] の列には、ロールを再配置の管理者にアプリケーションが使用するには、画面に表示するようにアクセス許可の名前を入力します。
[説明] の列で、アクセス許可の説明を入力します。
画面のアクセス許可を設定するコードを記述するには
[ソリューション エクスプローラー] では、画面上のノードのショートカット メニューを開き、[開く] を選択します。
この画面の [画面デザイナー] が開きます。
[コードの記述] の一覧で、ScreenName が選択した画面の名前である CanRunScreenNameを選択します。
[コード エディタ] では、CanRunScreenName のメソッドに次のコードを入力します:
If Current.User.HasPermission(Can_View_Products) Then result = True Else result = False End If
if (Current.User.HasPermission(Permissions.Can_View_Products)) { result = true; } else { result = false; }
このコードは、アプリケーションが起動するたびに評価されます。
[!メモ]
コード例が、Can_View_Products という名前のアクセス許可を確認することに注意してください。それが表示されるたびに、アプリケーションで定義したアクセス許可の名前に置き換えます。
コマンドのアクセス許可を設定するコードを記述するには
[ソリューション エクスプローラー] では、画面上のノードのショートカット メニューを開き、[開く] を選択します。
この画面の [画面デザイナー] が開きます。
[画面コンテンツ ツリー] のペインで、コマンドのノードを展開し、コードを記述するコマンドを選択します。
コマンドのショートカット メニューを開き、[ButtonName] が選択したコマンドの名前である [ButtonName]_CanExecuteを選択します。
[コード エディタ] で、[ButtonName]_CanExecute のメソッドに必要なコードを入力します。
[!メモ]
コードの例については、このトピックの前半にある「コードを記述して、画面のアクセス許可を設定するには」を参照してください。
エンティティのアクセス許可を設定するコードを記述するには
[ソリューション エクスプローラー] では、エンティティのノードのショートカット メニューを開き、[開く] を選択します。
そのエンティティの [Entity Designer] が開きます。
[コードの記述] の一覧で、EntityName はエンティティの名前である、[操作] が、コードを記述する操作の名前である EntityName**_Can**[操作] のメソッドを選択します。
[!メモ]
使用できる方法は、コンテキストに応じて異なります。CanDelete と CanUpdate は、その例です。
[コード エディタ] で、EntityName**_Can**[操作] のメソッドに必要なコードを入力します。
[!メモ]
コードの例については、このトピックの前半にある「コードを記述して、画面のアクセス許可を設定するには」を参照してください。
クエリのアクセス許可を設定するコードを記述するには
[ソリューション エクスプローラー] には、クエリのノードのショートカット メニューを開き、[開く] を選択します。
そのクエリの [クエリ デザイナー] が開きます。
[コードの記述] の一覧で、QueryName がクエリの名前である QueryName**_CanExecute** のメソッドのうち 1 つがを選択します。
[コード エディタ] で、QueryName**_CanExecute** のメソッドに必要なコードを入力します。
[!メモ]
コードの例については、このトピックの前半にある「コードを記述して、画面のアクセス許可を設定するには」を参照してください。
デバッグ用のアクセス許可を有効にするには
[ソリューション エクスプローラー] では、[プロパティ] のノードのショートカット メニューを開き、[開く] を選択します。
[アプリケーション デザイナー] では、[アクセス制御] のタブをクリックします。
[Define permissions or select permissions to use for debugging] グリッドで、デバッグ用に有効にすることを選択し、を [デバッグ用に許可] のチェック ボックスをオンにして、アクセス許可が。
発行
アプリケーションをセキュリティで保護すると、最後に、発行することです。最初に発行するときは、既定の管理者の認証情報を入力する必要があります。再び発行すると、この手順を繰り返す必要はありません。
アプリケーションを発行するときに認証情報を入力するには
[LightSwitch アプリケーション発行ウィザード] では、[セキュリティ設定] のページを選択し、[アプリケーション管理者を作成する] のオプション ボタンを選択します。
[!メモ]
サーバーに直接公開される場合にのみ残りの手順を実行する必要があります。パッケージを作成すると、パッケージを配置すると管理者アカウントを追加するように求めるメッセージが表示されます。
[ユーザー名] のテキスト ボックスに、ユーザー名を入力します。
Windows 認証を使用する場合、フォームの [ドメイン]の\[ユーザー名]がある有効な Windows ログオン名前を指定する必要があります。
ヒント また、既定の管理者として Active Directory のセキュリティ グループを割り当てることもできます。
[完全名] のテキスト ボックスに、管理者であるユーザーまたはグループの完全名を入力します。
[パスワード] のテキスト ボックスにパスワードを入力します。
[!メモ]
Windows 認証を使用する場合、[完全名]、[パスワード] と [パスワードの確認入力] のフィールドは表示されません。
[パスワードの確認入力] のテキスト ボックスにパスワードを再度入力します。
アプリケーションを実行してそれらを指定する必要があるので、ユーザー名とパスワードに注意してください。
アプリケーションの発行完了
ロールとユーザー
アプリケーション管理者の場合、発行されたアプリケーションを初めて実行する必要があります。次 [ロール] の画面とロールを定義し、アクセス許可をロールに再配置、ユーザーのグループにユーザーまたはロールを再配置するには [ユーザー] の画面を使用します。配置したときに、デザイン時または実行中のアプリケーションのこれらの画面にアクセスできます。デザイン時に、画面にアクセスするためにデバッグ アクセス許可を設定します。配置されたアプリケーションでは、セキュリティ管理権限が与えられたすべてのユーザーが画面にアクセスできます。
[!メモ]
ログオンするには、アプリケーションを発行時に指定したユーザー名とパスワードを使用する必要があります。
ロールを定義して、アクセス許可を割り当てるには
管理者のアクセス許可で、メニュー バーで実行されている発行されたアプリケーションで、[ロール] を選択します。
[ロール] のペインで、[+…] (追加) のボタンをクリックします。
[Add New Role] のダイアログ ボックスで、ロールの名前を入力し、を [OK] のボタンをクリックします。
[アクセス許可] のペインで、[+…] (追加) のボタンをクリックします。
新しい行が [アクセス許可] グリッドに表示されます。
グリッドの最初の列で、ボックスの一覧からアクセス許可を選択します。
一覧には、アプリケーションで使用可能なすべてのアクセス許可が表示されます。必要な、列を追加するには、それぞれの [+…] (追加) のボタンを選択するのと同じアクセス許可を追加できます。
アプリケーションのツール バーで、変更を保存するには [保存] のボタンをクリックします。
ユーザーまたはユーザー グループを追加するには
メニュー バーで、[ユーザー] の画面を表示するには [ユーザー] を選択します。
[ユーザーおよびグループ] のペインで、[+…] (追加) のボタンをクリックします。
[名前] のテキスト ボックスに、ユーザー名を入力します。
Windows 認証を使用する場合、エイリアス (terry) 形式で有効なユーザー名を、ドメイン、およびエイリアス (example\terry) エイリアス、およびドメイン (terry@example.com) 完全修飾ドメイン名とエイリアス (northamerica.corp.example.com\terry) 指定する。文字列全体が 256 文字より小さい数を含める必要があります。また、Active Directory にセキュリティ グループの名前を指定できます。フォーム認証を使用する場合は、ユーザー名が一意であると 256 以下の文字を含める必要があります。
[完全名] のテキスト ボックスに、ユーザーの完全名を入力します。
[名前] フィールド内の情報は表示目的のみで使用されます。
[!メモ]
Windows 認証では、[完全名] のフィールドが自動的にユーザー名に基づいて設定され、編集できません。
[パスワード] のテキスト ボックスにパスワードを入力します。
[!メモ]
[パスワード] と [パスワードの確認入力] のフィールドは、Windows 認証を使用している場合は表示されません。
[パスワードの確認入力] のテキスト ボックスに、同じパスワードを入力します。
[ロール] のペインで、[追加] のボタンを選択し、[ロール] の一覧のをクリックします。
複数のロールにロールごとにこの手順を繰り返すことにより、ユーザーを再配置できます。
アプリケーションのツール バーで、変更を保存するには [保存] のボタンをクリックします。
ユーザーまたはユーザー グループを削除するには
メニュー バーで、[ユーザー] の画面を表示するには [ユーザー] を選択します。
[ユーザーおよびグループ] のペインで、削除する選択し、[X] (削除) ボタンをクリックしてアカウントをします。
[!メモ]
ユーザーが削除されるアカウントでログオンした場合、そのサーバーからデータを保存またはアクセスできません。ユーザーがサーバーからデータにアクセスしようとするとアクセスが拒否されたことを示すメッセージが表示されます。
[!メモ]
グループ アカウントが削除されると、そのグループからロールが継承されたユーザーは、そのロールのアクセス許可を失います。
アプリケーションのツール バーで、変更を保存するには [保存] のボタンをクリックします。
参照
概念
その他の技術情報
Active Directory Security Groups (Active Directory のセキュリティ グループ)