方法: Silverlight クライアント アプリケーションで認証を有効にする
LightSwitch では、承認されていないユーザーがデータの読み取り、変更、削除を実行できないようにして、アプリケーションのセキュリティを高めることができます。 認証および承認を実装した場合、ユーザーは、アプリケーションにアクセスする前に、本人であることを証明する必要があります。
注意
HTML クライアントでは、アクセス許可を設定する方法が異なります。「方法: HTML クライアント アプリケーションで認証を有効にする」を参照してください。SharePoint が有効になっている LightSwitch アプリは、SharePoint 認証を使用してアクセスを制御します。
ユーザー数が多い場合は、特定の画面とデータへのアクセスにさまざまなレベルがあるユーザー ロールを作成し、各ユーザーを適切なロールに割り当てることで、アクセスをより簡単に管理できます。
たとえば、給与アプリケーションを使用すると、従業員は自分の給与情報を変更できませんが、表示できます。 ただし、給与スーパーバイザーには、従業員の情報を表示および変更するアクセス許可が与えられる可能性があります。 従業員には従業員ロールが割り当てられ、スーパーバイザーにはスーパーバイザー ロールが割り当てられます。
また、ユーザーを Active Directory のセキュリティ グループに追加し、それらのグループにアクセス許可を割り当てることによって、より簡単にアクセス許可を管理できます。 メンバーシップとアクセス許可は継承されるため、一度の変更で、単一のグループだけでなくすべてのサブグループに対してアクセスの許可と拒否を行うことができます。 たとえば、Active Directory の Sales グループに Bob を追加できます。 Sales が Marketing のサブグループである場合は、Marketing に付与するアクセス許可はすべて、Bob にも付与されます。
認証
アプリケーションを保護する最初の手順は、認証を有効にすることです。 Windows 認証またはフォーム認証を使用できます。 フォーム認証は、アプリケーション自体によって管理され、ユーザーは、アプリケーションにアクセスするためにユーザー名とパスワードを入力する必要があります。 Windows 認証では、アプリケーションの実行場所であるコンピューターへのログオンに使用された資格情報が、アプリケーション ユーザーの認証に使用されます。追加のユーザー名もパスワードも必要ありません。 両方のケースで、アプリケーション管理者は、権限を持つユーザーのリストを保持します。フォーム認証では、この管理者が、暗号化されたパスワードも保持します。
認証を有効にするには
ソリューション エクスプローラーで [プロパティ] ノードのショートカット メニューを表示し、[開く] を選択します。
アプリケーション デザイナーで [アクセス制御] タブを選択します。
[使用する認証の種類の選択] の一覧の [Windows 認証を使用する] または [フォーム認証を使用する] を選択します。
[Windows 認証を使用する] を選択した場合は、[アプリケーションの [ユーザー] 画面で指定されたユーザーのみ許可する] と [認証されたすべての Windows ユーザーを許可する] のいずれかのオプション ボタンをクリックします。
これでアプリケーションでは、ユーザーがアプリケーションにアクセスするために資格情報の入力が必要になります。
認証を無効にするには
ソリューション エクスプローラーで [プロパティ] ノードのショートカット メニューを表示し、[開く] を選択します。
アプリケーション デザイナーで [アクセス制御] タブを選択します。
[使用する認証の種類の選択] の一覧の [認証を有効にしない] を選択します。
アプリケーションでは、ユーザーがアプリケーションにアクセスするために資格情報を入力する必要はありません。また、すべてのユーザーがアプリケーションのすべての部分にアクセスできます。
アクセス許可
アプリケーションを保護する次の手順は、アクセス許可を作成することです。 画面、コマンド、データ エンティティ、およびクエリのアクセス許可を定義することができます。 最初に、アプリケーション デザイナーでアクセス許可オブジェクトを定義します。 CanRun<ScreenName> または <QueryName>_CanExecute など、Can メソッドの 1 つで、コード内でオブジェクトを参照できます。 これらのメソッドのコードは、通常、現在のユーザーまたはロールに権限があるかどうかを確認し、その後に、フォームを表示します。または、アクセス許可が検証された場合にのみ、クエリを実行します。
コードをテストするには、アクセス許可を持つユーザーと持たないユーザーの両方としてアプリケーションを実行します。 デバッグ アクセス許可を設定すると、アプリケーションをテストまたはデバッグするときに、ユーザーとして実行できます。
アクセス許可を作成するには
ソリューション エクスプローラーで [プロパティ] ノードのショートカット メニューを表示し、[開く] を選択します。
アプリケーション デザイナーで [アクセス制御] タブを選択します。
[デバッグに使用するアクセス許可を定義または選択してください] グリッドで、[名前] 列の [<新しいアクセス許可の追加>] を選択してから、アクセス許可のプログラミング用の名前を入力します。
名前の先頭はアルファベットの文字である必要があり、名前にはアルファベット文字または数字、またはアンダースコアを含めることができます。
[表示名] 列にアクセス許可の名前を入力します。この名前が、アプリケーション管理者がロールの割り当てに使用する画面に表示されます。
[説明] 列にアクセス許可の説明を入力します。
画面のアクセス許可を設定するコードを記述するには
ソリューション エクスプローラーで、画面ノードのショートカット メニューを開き、[開く] をクリックします。
その画面の画面デザイナーが開きます。
[コードの記述] ボックスの一覧で、CanRunScreenName を選択します。ここで、ScreenName は、選択した画面の名前です。
コード エディターで、次のコードを CanRunScreenName メソッドに入力します。
If Application.User.HasPermission(Can_View_Products) Then result = True Else result = False End If
if (Application.User.HasPermission(Permissions.Can_View_Products)) { result = true; } else { result = false; }
このコードは、アプリケーションが起動するたびに評価されます。
注意
コード例が、Can_View_Products という名前のアクセス許可を確認することに注意してください。アプリケーションで定義したアクセス許可の名前を置き換えます。
コマンドのアクセス許可を設定するコードを記述するには
ソリューション エクスプローラーで、画面ノードのショートカット メニューを開き、[開く] をクリックします。
その画面の画面デザイナーが開きます。
[画面コンテンツ ツリー] ウィンドウでコマンド ノードを展開し、コマンドを選択します。このコマンドのコードを記述します。
コマンドのショートカット メニューを開き、ButtonName**_CanExecute** を選択します。ここで ButtonName は、選択したコマンドの名前です。
コード エディターで、必要なコードを ButtonName**_CanExecute** メソッドに入力します。
注意
コードの例については、このトピックの前半にある「コードを記述して、画面のアクセス許可を設定するには」を参照してください。
エンティティのアクセス許可を設定するコードを記述するには
ソリューション エクスプローラーで、エンティティ ノードのショートカット メニューを開き、[開く] をクリックします。
そのエンティティのエンティティ デザイナーが開きます。
エンティティ デザイナーの [パースペクティブ] バーで [サーバー] をクリックします。
[コードの記述] ボックスの一覧で、EntityName**_Can**Operation メソッドを選択します。ここで、EntityName はエンティティの名前であり、Operation は操作の名前です。この操作のコードを記述します。
注意
使用できるメソッドは、コンテキストによって異なります。CanDelete と CanUpdate は、その例です。
コード エディターで、必要なコードを EntityName**_Can**Operation メソッドに入力します。
注意
コードの例については、このトピックの前半にある「コードを記述して、画面のアクセス許可を設定するには」を参照してください。
クエリのアクセス許可を設定するコードを記述するには
ソリューション エクスプローラーで、クエリ ノードのショートカット メニューを開き、[開く] をクリックします。
そのクエリのクエリ デザイナーが開きます。
[コードの記述] ボックスの一覧で、QueryName**_CanExecute** メソッドのいずれかを選択します。ここで QueryName は、クエリの名前です。
コード エディターで、必要なコードを QueryName**_CanExecute** メソッドに入力します。
注意
コードの例については、このトピックの前半にある「コードを記述して、画面のアクセス許可を設定するには」を参照してください。
デバッグ用のアクセス許可を有効にするには
ソリューション エクスプローラーで [プロパティ] ノードのショートカット メニューを表示し、[開く] を選択します。
アプリケーション デザイナーで [アクセス制御] タブを選択します。
[デバッグに使用するアクセス許可を定義または選択してください] グリッドで、デバッグのために有効にするアクセス許可を選択してから、[デバッグ用に許可] チェックボックスをオンにします。
発行と管理
認証の有効化の最後の手順は、発行時にアプリケーションの既定の管理者を定義することです。 発行した後は、既定の管理者がログインし、ユーザー、ロール、およびアクセス許可を定義する必要があります。
管理者を定義するには
「LightSwitch アプリケーションの管理」の手順に従います。
重要
認証が有効で、既定の管理者を定義していない場合は、発行したアプリケーションにアクセスできません。
参照
処理手順
方法: HTML クライアント アプリケーションで認証を有効にする