クライアント アプリケーション サービスの概要
更新 : 2007 年 11 月
クライアント アプリケーション サービスは、Windows フォーム アプリケーションおよび Windows Presentation Foundation (WPF) アプリケーションから ASP.NET AJAX のログイン サービス、ロール サービス、プロファイル サービスにアクセスするための簡単な方法を提供します。ASP.NET AJAX アプリケーション サービスは、Visual Studio 2008 および .NET Framework version 3.5 に付属している Microsoft ASP.NET 2.0 AJAX Extensions に含まれています。これらのサービスにより、複数の Web および Windows ベースのアプリケーションで、シングル サーバーから提供されるユーザー情報とユーザー管理機能を共有できます。
クライアント アプリケーション サービスには、Web サービス機能拡張モデルに組み込まれるクライアント サービス プロバイダが含まれており、これにより、Windows ベースのアプリケーションで次のことが可能になります。
単純なクライアント構成。Visual Studio プロジェクト デザイナを使用するか、プロジェクトの App.config ファイルでクライアント サービス プロバイダを指定することにより、ログイン サービス、ロール サービス、およびプロファイル サービスを有効化および構成することができます。詳細については、「方法 : クライアント アプリケーション サービスを構成する」を参照してください。
単純なプログラミング。クライアント アプリケーション サービスを有効にし、構成した後、既存の .NET Framework 2.0 のメンバシップ クラス、ロール クラス、およびアプリケーション設定クラスを使用して間接的にサービス プロバイダにアクセスできます。クライアント アプリケーション サービスを実装する .NET Framework version 3.5 Service Pack 1 クラスに直接アクセスすることもできます。ただし、ほとんどの場合、直接アクセスは不要です。クライアント アプリケーション サービスのクラスの詳細については、このトピックの「クライアント アプリケーション サービスのクラス」を参照してください。
オフラインのサポート。Windows ベースのアプリケーションは、多くの場合、接続頻度の低い環境下に置かれます。アプリケーションがオンラインのときに、クライアント サービス プロバイダは、サーバーから取得された値をオフライン時にも使用できるようにキャッシュします。詳細については、「方法 : クライアント アプリケーション サービスをオフライン モードで操作する」を参照してください。
Visual Studio アプリケーション設定デザイナとの統合。Visual Studio でプロジェクトに設定を追加するときに、クライアント設定サービス プロバイダを介してアクセスされる設定を指定できます。
以下のセクションでは、これらの機能について詳しく説明します。ASP.NET AJAX アプリケーション サービスの詳細については、「ASP.NET アプリケーション サービスの概要」を参照してください。
認証
クライアント アプリケーション サービスを使用して、既存の ASP.NET AJAX 認証サービスを介してユーザーを検証できます。ユーザーは、Windows 認証またはフォーム認証を使用して認証できます。Windows 認証では、ユーザーがコンピュータまたはドメインにログオンしたときにオペレーティング システムによって付与されたユーザー ID が使用されます。通常、Windows 認証は、社内イントラネット上に配置されているアプリケーションに対して使用します。フォーム認証では、アプリケーションにログイン コントロールを組み込み、取得した資格情報を認証プロバイダに渡します。通常、フォーム認証は、インターネット上に配置されたアプリケーションに対して使用します。
ユーザーを検証するには、static Membership.ValidateUser メソッドを呼び出します。このメソッドは、アプリケーションで構成されているクライアント サービス プロバイダにアクセスし、ユーザーが有効であるかどうかを示す Boolean 値を返します。詳細については、「方法 : クライアント アプリケーション サービスでユーザーのログインとログアウトを実装する」を参照してください。
Windows 認証を使用している場合は、ValidateUser メソッドのパラメータとして空の文字列または null を渡す必要があります。Windows 認証を使用している場合、このメソッドを呼び出すと常に true が返されます。
フォーム認証では、ValidateUser メソッドは、リモート サービスがユーザーを認証したかどうかを示す値を返します。検証が成功すると、認証 Cookie がローカル ハード ディスクに格納されます。ロール サービスおよび設定サービスにアクセスする際、この Cookie が検証の確認に使用されます。
フォーム認証を使用している場合は、ユーザー名とパスワードを ValidateUser メソッドに渡すことができます。また、パラメータとして空の文字列または null を渡して、資格情報プロバイダを使用することもできます。資格情報プロバイダは、アプリケーション構成で指定するクラスです。資格情報プロバイダ クラスは、IClientFormsAuthenticationCredentialsProvider インターフェイスを実装する必要があります。このインターフェイスには、GetCredentials という単一のメソッドがあります。資格情報プロバイダを使用することにより、複数のアプリケーション間で同じログイン ダイアログ ボックスを共有できます。詳細については、「方法 : クライアント アプリケーション サービスを構成する」を参照してください。
フォーム認証で資格情報プロバイダを使用するようにアプリケーションを構成する際には、ValidateUser メソッドのパラメータとして空の文字列または null を渡す必要があります。サービス プロバイダは IClientFormsAuthenticationCredentialsProvider.GetCredentials メソッド実装を呼び出します。通常、このメソッドを実装してダイアログ ボックスを表示し、データが設定された ClientFormsAuthenticationCredentials オブジェクトを返します。
認証の詳細については、「ASP.NET の認証」を参照してください。ASP.NET AJAX 認証サービスの設定方法の詳細については、「ASP.NET AJAX でのフォーム認証の使用」を参照してください。
ロール
クライアント アプリケーション サービスを使用して、既存の ASP.NET AJAX ロール サービスからロール情報を取得できます。現在の認証済みユーザーが特定のロールに属すかどうかを判断するには、static Thread.CurrentPrincipal プロパティから取得された IPrincipal 参照の IsInRole メソッドを呼び出します。IsInRole メソッドは、パラメータとしてロール名を受け取り、現在のユーザーが特定のロールにあるかどうかを示す Boolean 値を返します。ユーザーが認証されない場合、または指定されたロールに属していない場合、このメソッドは false を返します。
詳細については、「方法 : クライアント アプリケーション サービスでユーザー ロールにアクセスする」を参照してください。ASP.NET AJAX ロール サービスの設定方法の詳細については、「ASP.NET AJAX でのロール情報の使用」を参照してください。
設定
クライアント アプリケーション サービスを使用して、既存の ASP.NET AJAX プロファイル サービスからユーザーのアプリケーション設定を取得できます。クライアント アプリケーション サービスの Web 設定機能は .NET Framework 2.0 のアプリケーション設定機能と統合されています。Web 設定を取得するには、まず、Visual Studio プロジェクト デザイナの [設定] タブを使用し、プロジェクトに対して Settings クラス (C# では Properties.Settings.Default、Visual Basic では My.Settings としてアクセスされる) を生成します。[設定] タブで、[Web 設定の読み込み] ボタンをクリックし、Web 設定を読み込み、これを生成された Settings クラスに追加できます。すべての認証済みユーザーまたはすべての匿名ユーザーによって使用されるように構成された Web 設定を使用できます。
詳細については、「方法 : クライアント アプリケーション サービスでユーザー設定にアクセスする」を参照してください。アプリケーション設定の詳細については、「アプリケーション設定の概要」を参照してください。Visual Studio で設定クラスを生成するのではなく独自の設定クラスを実装する方法の詳細については、「方法 : アプリケーション設定を作成する」を参照してください。ASP.NET AJAX プロファイル サービスの設定方法の詳細については、「ASP.NET AJAX でのプロファイル情報の使用」を参照してください。
クライアント アプリケーション サービスのクラス
次の表は、クライアント アプリケーション サービス機能を実装するクラスの説明です。
主要な認証機能、ロール機能、および設定機能のみを使用するアプリケーションであれば、これらのクラスに直接アクセスする必要はありません。このようなアプリケーションは、前のセクションで説明したアプリケーション構成や API を使用して間接的にクライアント アプリケーション サービス プロバイダにアクセスします。ユーザーのログアウト機能やオフライン機能などの追加機能を実装するために、これらのクラスに直接アクセスする必要があります。
メモ : |
---|
すべてのクライアント アプリケーション サービスの API は同期的です。クライアント アプリケーション サービスは、非同期動作を直接にはサポートしていません。 |
クライアント アプリケーション サービス プロバイダは、標準 .NET Framework 2.0 型を実装または拡張しますが、これらの型で定義されるメンバと機能をすべて実装するわけではありません。たとえば、クライアント アプリケーション サービス プロバイダを使用して、新しいユーザーの作成や、ロール メンバシップを管理するユーザー管理アプリケーションを実装することはできません。この機能を実装するには、現在のところ Web アプリケーションとサーバー側コードを使用する必要があります。実装されないメンバを確認するには、この表に示されているリンクから、リファレンス ドキュメントを参照してください。
クラス |
説明 |
---|---|
このクラスは、フォーム認証用のユーザー ID と認証 Cookie を管理します。 このクラスに直接アクセスする主な理由は、ユーザーを自動的に再検証する RevalidateUser メソッドを呼び出すためです。たとえば、オフライン モードからオンライン モードに切り替える場合などが該当します。 フォーム認証を使用してユーザーが認証された後、static Thread.CurrentPrincipal プロパティを介して取得される IPrincipal 参照の Identity プロパティを使用してこのクラスのインスタンスを取得できます。 |
|
このクラスは、ユーザー ロールを管理します。 このクラスには、間接的にアクセスできないメンバはありません。ただし、ユーザーが認証された後、static Thread.CurrentPrincipal プロパティを使用してこのクラスのインスタンスにアクセスできます。 |
|
このクラスは、アプリケーションをオフライン モードに切り替える際に使用する static IsOffline プロパティを提供します。詳細については、「方法 : クライアント アプリケーション サービスをオフライン モードで操作する」を参照してください。 |
|
このクラスはユーザー資格情報を表します。 このクラスは、IClientFormsAuthenticationCredentialsProvider インターフェイスを実装する際、GetCredentials メソッドの戻り値の型としてのみ使用します。 |
|
このクラスは、フォーム認証用リモート認証サービスへのアクセスを管理します。 このクラスに直接アクセスする主な理由は、Logout メンバと UserValidated メンバを使用するためです。これらのメンバは、基本 MembershipProvider クラスでは実装されません。また、ServiceUri プロパティを使用して、サービスの場所をプログラムによって設定することもできます。 このクラスのインスタンスは、static Membership.Provider プロパティを使用して取得できます。 |
|
このクラスは Windows 認証を管理します。 このクラスに直接アクセスする主な理由は、Logout メソッドを呼び出すためです。ログアウト後、ユーザーは Windows に対しては認証されていますが、リモート アプリケーション サービスにはアクセスできなくなります。 このクラスのインスタンスは、static Membership.Provider プロパティを使用して取得できます。 |
|
このクラスは、リモート ロール サービスへのアクセスを管理します。 このクラスにアクセスする主な理由は、ResetCache メソッドを呼び出すためです。これは、アプリケーションがゼロ以外のロール サービス キャッシュのタイムアウト値を使用するように構成されている場合に便利です。詳細については、「方法 : クライアント アプリケーション サービスを構成する」を参照してください。また、ServiceUri プロパティを使用して、サービスの場所をプログラムによって設定することもできます。 このクラスのインスタンスは、static Roles.Provider プロパティを使用して取得できます。 |
|
このクラスは、リモート Web 設定サービスへのアクセスを管理します。 このクラスにアクセスする主な理由は、SettingsSaved イベントを処理するためです。また、ServiceUri プロパティを使用して、サービスの場所をプログラムによって設定することもできます。 |
|
このインターフェイスは、このトピックの「認証」セクションで説明したとおり、アプリケーションが検証時にユーザーの資格情報を取得するための間接的な手段を提供します。詳細については、「方法 : クライアント アプリケーション サービスを構成する」を参照してください。 |
|
このクラスは、ClientSettingsProvider.SettingsSaved イベント ハンドラ内で使用する FailedSettingsList プロパティを提供します。 |
|
このクラスは、UserValidated イベント ハンドラ内で使用する UserName プロパティを提供します。 |
参照
処理手順
方法 : クライアント アプリケーション サービスを構成する
方法 : クライアント アプリケーション サービスでユーザーのログインとログアウトを実装する
方法 : クライアント アプリケーション サービスでユーザー ロールにアクセスする
方法 : クライアント アプリケーション サービスでユーザー設定にアクセスする
方法 : クライアント アプリケーション サービスをオフライン モードで操作する
チュートリアル : クライアント アプリケーション サービスの使用