方法 : ASP.NET メンバシップ プロバイダを使用する
ASP.NET メンバシップ プロバイダを使用すると、ASP.NET 開発者は、ユーザーが一意のユーザー名とパスワードの組み合わせを作成できる Web サイトを作成できます。この機能を使用すれば、ユーザーはだれでもサイトでアカウントを作成し、そのサイトにサインインして、サービスに排他的にアクセスできます。これは、ユーザーが Windows ドメイン内にアカウントを持っていることが必要な Windows セキュリティとは対照的です。自分の資格情報 (ユーザー名とパスワードの組み合わせ) を提示したユーザーは、だれでもサイトとそのサービスを使用できるからです。
サンプル アプリケーションについては、「Membership and Role Provider」を参照してください。ASP.NET ロール プロバイダ機能の使用については、「方法 : ASP.NET のロール プロバイダとサービスを使用する」を参照してください。
メンバシップ機能では、SQL Server データベースを使用してユーザー情報を格納する必要があります。メンバシップ機能には、パスワードを忘れたユーザーへの質問を行うためのメソッドも含まれています。
Windows Communication Foundation (WCF) 開発者は、セキュリティを向上させるためにこれらの機能を利用できます。この機能を WCF アプリケーションに統合した場合、ユーザーはユーザー名とパスワードの組み合わせを WCF クライアント アプリケーションに提示する必要があります。データを WCF サービスに転送するには、WSHttpBinding (構成では wsHttpBinding Element) のような、ユーザー名/パスワード資格情報をサポートするバインディングを使用し、クライアントの資格情報の種類を UserName に設定します。サービス側では、WCF セキュリティが、ユーザー名とパスワードに基づいてユーザーを認証し、ASP.NET ロールによって指定されるロールを割り当てます。
メモ : |
---|
WCF では、ユーザー名/パスワードの組み合わせ、またはその他のユーザー情報をデータベースに格納するメソッドは提供されません。 |
メンバシップ プロバイダを構成するには
Web.config ファイルの <system.web> 要素の下に <providers> 要素を作成します。
<providers> 要素の子要素として、<clear /> 要素を追加し、プロバイダのコレクションをフラッシュします。
<clear /> 要素の下に <add> 要素を作成し、name、type、connectionStringName、applicationName、enablePasswordRetrieval、enablePasswordReset、requiresQuestionAndAnswer、requiresUniqueEmail、および passwordFormat の各属性を適切な値に設定します。name 属性は、構成ファイルの値として後で使用します。
SqlMembershipProvider
に設定する方法の例を次に示します。次の例は構成セクションを示します。
<!-- Configure the Sql Membership Provider --> <membership defaultProvider="SqlMembershipProvider" userIsOnlineTimeWindow="15"> <providers> <clear /> <add name="SqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="SqlConn" applicationName="MembershipAndRoleProviderSample" enablePasswordRetrieval="false" enablePasswordReset="false" requiresQuestionAndAnswer="false" requiresUniqueEmail="true" passwordFormat="Hashed" /> </providers> </membership>
ユーザー名/パスワードの組み合わせを受け入れるようにサービス セキュリティを構成するには
構成ファイルの <system.ServiceModel> 要素の下に、<bindings> 要素を追加します。
バインディング セクションに wsHttpBinding Elementを追加します。WCF のバインディング要素の作成詳細については、 、「方法 : 構成でサービス バインディングを指定する」を参照してください。
<security> 要素の mode 属性を Message に設定します。
<message> 要素の clientCredentialType 属性を UserName に設定します。これにより、ユーザー名/パスワードの組み合わせがクライアントの資格情報として使用されるようになります。
次のコード例は、バインディングの構成コードを示しています。
<system.serviceModel> <bindings> <wsHttpBinding> <!-- Set up a binding that uses UserName as the client credential type --> <binding name="MembershipBinding"> <security mode ="Message"> <message clientCredentialType ="UserName"/> </security> </binding> </wsHttpBinding> </bindings> </system.serviceModel>
メンバシップ プロバイダを使用するようにサービスを構成するには
<system.serviceModel> 要素の子として <behaviors> 要素を追加します。
serviceBehaviors section を <behaviors> 要素に追加します。
Behavior element を追加し、name 属性を適切な値に設定します。
<serviceCredentials> Elementを <behavior> 要素に追加します。
userNameAuthentication elementを <serviceCredentials> 要素に追加します。
userNamePasswordValidationMode 属性を MembershipProvider に設定します。
メモ : userNamePasswordValidationMode 値が設定されていない場合、WCF は ASP.NET メンバシップ プロバイダの代わりに Windows 認証を使用します。 membershipProviderName 属性をプロバイダの名前 (このトピックの最初の手順でプロバイダを追加したときに指定したもの) に設定します。次の例に、この時点での <serviceCredentials> のフラグメントを示します。
<serviceCredentials> <userNameAuthentication userNamePasswordValidationMode ="MembershipProvider" membershipProviderName ="SqlMembershipProvider"/> </serviceCredentials>
関連項目
タスク
方法 : ASP.NET のロール プロバイダとサービスを使用する