クライアント アプリケーション サービスの概要

クライアント アプリケーション サービスは、Windows フォーム アプリケーションおよび Windows Presentation Foundation (WPF) アプリケーションから Microsoft Ajax のログイン サービス、ロール サービス、プロファイル サービスにアクセスするための簡単な方法を提供します。 Microsoft 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 クラスに直接アクセスすることもできます。 ただし、ほとんどの場合、直接アクセスは不要です。クライアント アプリケーション サービスのクラスの詳細については、このトピックの「クライアント アプリケーション サービスのクラス」を参照してください。

  • オフラインのサポート。 Windows ベースのアプリケーションは、多くの場合、接続頻度の低い環境下に置かれます。 アプリケーションがオンラインのときに、クライアント サービス プロバイダーは、サーバーから取得された値をオフライン時にも使用できるようにキャッシュします。 詳細については、「方法 : クライアント アプリケーション サービスをオフライン モードで操作する」を参照してください。

  • Visual Studio アプリケーション設定デザイナーとの統合。 Visual Studio でプロジェクトに設定を追加するときに、クライアント設定サービス プロバイダーを介してアクセスされる設定を指定できます。

以下のセクションでは、これらの機能について詳しく説明します。 Microsoft Ajax アプリケーション サービスの詳細については、「ASP.NET アプリケーション サービスの概要」を参照してください。

認証

クライアント アプリケーション サービスを使用して、既存の Microsoft 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 の認証」を参照してください。 Microsoft Ajax 認証サービスの設定方法の詳細については、「Microsoft Ajax でのフォーム認証の使用」を参照してください。

ロール

クライアント アプリケーション サービスを使用して、既存の Microsoft Ajax ロール サービスからロール情報を取得できます。 現在の認証済みユーザーが特定のロールに属すかどうかを判断するには、static Thread.CurrentPrincipal プロパティから取得された IPrincipal 参照の IsInRole メソッドを呼び出します。 IsInRole メソッドは、パラメーターとしてロール名を受け取り、現在のユーザーが特定のロールにあるかどうかを示す Boolean 値を返します。 ユーザーが認証されない場合、または指定されたロールに属していない場合、このメソッドは false を返します。

詳細については、「方法 : クライアント アプリケーション サービスでユーザー ロールにアクセスする」を参照してください。 Microsoft Ajax ロール サービスの設定方法の詳細については、「Microsoft Ajax でのロール情報の使用」を参照してください。

設定

クライアント アプリケーション サービスを使用して、既存の Microsoft Ajax プロファイル サービスからユーザーのアプリケーション設定を取得できます。 クライアント アプリケーション サービスの Web 設定機能は、.NET Framework 2.0 のアプリケーション設定機能と統合されています。Web 設定を取得するには、まず、Visual Studio プロジェクト デザイナーの [設定] タブを使用して、プロジェクトの Settings クラス (C# では Properties.Settings.Default、Visual Basic では My.Settings としてアクセスされる) を生成します。 [設定] タブで、[Web 設定の読み込み] ボタンをクリックし、Web 設定を読み込み、これを生成された Settings クラスに追加できます。 すべての認証済みユーザーまたはすべての匿名ユーザーによって使用されるように構成された Web 設定を使用できます。

詳細については、「方法 : クライアント アプリケーション サービスでユーザー設定にアクセスする」を参照してください。 アプリケーション設定の詳細については、「アプリケーション設定の概要」を参照してください。 Visual Studio で設定クラスを生成するのではなく独自の設定クラスを実装する方法の詳細については、「方法 : アプリケーション設定を作成する」を参照してください。 Microsoft Ajax プロファイル サービスの設定方法の詳細については、「Microsoft Ajax でのプロファイル情報の使用」を参照してください。

クライアント アプリケーション サービスのクラス

次の表は、クライアント アプリケーション サービス機能を実装するクラスの説明です。

主要な認証機能、ロール機能、および設定機能のみを使用するアプリケーションであれば、これらのクラスに直接アクセスする必要はありません。 このようなアプリケーションは、前のセクションで説明したアプリケーション構成や API を使用して間接的にクライアント アプリケーション サービス プロバイダーにアクセスします。 ユーザーのログアウト機能やオフライン機能などの追加機能を実装するために、これらのクラスに直接アクセスする必要があります。

注意

すべてのクライアント アプリケーション サービスの API は同期的です。 クライアント アプリケーション サービスは、非同期動作を直接にはサポートしていません。

クライアント アプリケーション サービス プロバイダーは、標準 .NET Framework 2.0 型を実装または拡張しますが、これらの型で定義されるメンバーと機能をすべて実装するわけではありません。 たとえば、クライアント アプリケーション サービス プロバイダーを使用して、新しいユーザーの作成や、ロール メンバーシップを管理するユーザー管理アプリケーションを実装することはできません。 この機能を実装するには、現在のところ Web アプリケーションとサーバー側コードを使用する必要があります。 実装されないメンバーを確認するには、この表に示されているリンクから、リファレンス ドキュメントを参照してください。

クラス

説明

ClientFormsIdentity

このクラスは、フォーム認証用のユーザー ID と認証 Cookie を管理します。

このクラスに直接アクセスする主な理由は、ユーザーを自動的に再検証する RevalidateUser メソッドを呼び出すためです。たとえば、オフライン モードからオンライン モードに切り替える場合などが該当します。

フォーム認証を使用してユーザーが認証された後、static Thread.CurrentPrincipal プロパティを介して取得される IPrincipal 参照の Identity プロパティを使用してこのクラスのインスタンスを取得できます。

ClientRolePrincipal

このクラスは、ユーザー ロールを管理します。

このクラスには、間接的にアクセスできないメンバーはありません。 ただし、ユーザーが認証された後、static Thread.CurrentPrincipal プロパティを使用してこのクラスのインスタンスにアクセスできます。

ConnectivityStatus

このクラスは、アプリケーションをオフライン モードに切り替える際に使用する static IsOffline プロパティを提供します。 詳細については、「方法 : クライアント アプリケーション サービスをオフライン モードで操作する」を参照してください。

ClientFormsAuthenticationCredentials

このクラスはユーザー資格情報を表します。

このクラスは、IClientFormsAuthenticationCredentialsProvider インターフェイスを実装する際、GetCredentials メソッドの戻り値の型としてのみ使用します。

ClientFormsAuthenticationMembershipProvider

このクラスは、フォーム認証用リモート認証サービスへのアクセスを管理します。

このクラスに直接アクセスする主な理由は、Logout メンバーと UserValidated メンバーを使用するためです。これらのメンバーは、基本 MembershipProvider クラスでは実装されません。 また、ServiceUri プロパティを使用して、サービスの場所をプログラムによって設定することもできます。

このクラスのインスタンスは、static Membership.Provider プロパティを使用して取得できます。

ClientWindowsAuthenticationMembershipProvider

このクラスは Windows 認証を管理します。

このクラスに直接アクセスする主な理由は、Logout メソッドを呼び出すためです。 ログアウト後、ユーザーは Windows に対しては認証されていますが、リモート アプリケーション サービスにはアクセスできなくなります。

このクラスのインスタンスは、static Membership.Provider プロパティを使用して取得できます。

ClientRoleProvider

このクラスは、リモート ロール サービスへのアクセスを管理します。

このクラスにアクセスする主な理由は、ResetCache メソッドを呼び出すためです。 これは、アプリケーションがゼロ以外のロール サービス キャッシュのタイムアウト値を使用するように構成されている場合に便利です。 詳細については、「方法 : クライアント アプリケーション サービスを構成する」を参照してください。 また、ServiceUri プロパティを使用して、サービスの場所をプログラムによって設定することもできます。

このクラスのインスタンスは、static Roles.Provider プロパティを使用して取得できます。

ClientSettingsProvider

このクラスは、リモート Web 設定サービスへのアクセスを管理します。

このクラスにアクセスする主な理由は、SettingsSaved イベントを処理するためです。 また、ServiceUri プロパティを使用して、サービスの場所をプログラムによって設定することもできます。

IClientFormsAuthenticationCredentialsProvider

このインターフェイスは、このトピックの「認証」セクションで説明したとおり、アプリケーションが検証時にユーザーの資格情報を取得するための間接的な手段を提供します。 詳細については、「方法 : クライアント アプリケーション サービスを構成する」を参照してください。

SettingsSavedEventArgs

このクラスは、ClientSettingsProvider.SettingsSaved イベント ハンドラー内で使用する FailedSettingsList プロパティを提供します。

UserValidatedEventArgs

このクラスは、UserValidated イベント ハンドラー内で使用する UserName プロパティを提供します。

参照

処理手順

方法 : クライアント アプリケーション サービスを構成する

方法: クライアント アプリケーション サービスでユーザーのログインを実装する

方法 : クライアント アプリケーション サービスでユーザー ロールにアクセスする

方法 : クライアント アプリケーション サービスでユーザー設定にアクセスする

方法 : クライアント アプリケーション サービスをオフライン モードで操作する

チュートリアル : クライアント アプリケーション サービスの使用

概念

アプリケーション設定の概要

ASP.NET アプリケーション サービスの概要

Microsoft Ajax でのフォーム認証の使用

Microsoft Ajax でのロール情報の使用

Microsoft Ajax でのプロファイル情報の使用

その他の技術情報

クライアント アプリケーション サービス

アプリケーションの設定の管理

ASP.NET の認証

ロールを使用した承認の管理

SQL Server 向けアプリケーション サービス データベースの作成と構成