1

一部の人々に公開したいWCFアプリケーションがありますが、彼らがサービスを使用するために、何らかの形で認証したいのですが、ユーザーが検証されているかどうかを確認する独自のメンバーシッププロバイダーを作成することは可能ですか?メソッドを呼び出すValidateUser?また、バインディング/動作にこのメンバーシップ プロバイダーを使用するように指示するにはどうすればよいですか?

編集

これについてもいくつか質問があります。例: クライアントから呼び出された Web サービスのメソッドを呼び出すとQueryStockします。メソッドを起動する前に、メンバーシップ プロバイダーを使用してユーザーを最初に検証しますか?それとも、ユーザー名とパスワードをパラメーターとして渡してからMembership.ValidateUser(username, password)、メソッドでコードを実行する前に行う必要がありますか?

4

4 に答える 4

0

これはすべてWCFで行うことができます。現在、現在のWCFサービスに使用しています。

独自のメンバーシッププロバイダーを作成して(asp.netアプリケーションの場合と同じように)、それをWCFに組み込むこともできます。「WCFメンバーシッププロバイダー」をグーグルで検索すると、これに関する情報がたくさんあります。この投稿も役立つかもしれません:SQLメンバーシッププロバイダーを使用したWCF認証

于 2012-04-17T12:35:45.023 に答える
0

私もこの質問をしました: すべての呼び出しに対する WCF での認証

ご覧のとおり、ASP.NET 認証を使用できます。

ユーザーを検証する独自の方法がある場合は、一種のファサードを使用して、ユーザー + トークンを使用してすべてのサービス メソッドを呼び出し、一種の「非同期セッション」を維持しようとします。

そのため、ユーザーが初めてログインしたときに新しいトークンを作成し、次に各呼び出しで新しいトークンを作成して、次の呼び出しで使用できます。ユーザー + トークンを含むテーブルのみを使用して、すべての呼び出しを保護します。

于 2012-04-17T14:43:56.387 に答える
0

はい、可能です。この記事を見てください。カスタム プロバイダーを使用したサンプルが示されています。

于 2012-04-17T12:34:48.550 に答える
0

構成で動作を定義する必要があります。次に例を示します。

<behaviors>
  <serviceBehaviors>
    <behavior name="Framework.Services.FrameworkBehaviour">
      ...
      <serviceAuthorization principalPermissionMode="UseAspNetRoles" roleProviderName="CustomProvider" />
      <serviceCredentials>
        <serviceCertificate ... />
        <userNameAuthentication userNamePasswordValidationMode="Custom" customUserNamePasswordValidatorType="...." />
      </serviceCredentials>
    </behavior>

これはバインディング スニペットです。

   <binding name="userNamePassOverSsl" ...>
      <security mode="TransportWithMessageCredential">
        <transport  />
        <message clientCredentialType="UserName" />
      </security>
    </binding>
于 2012-04-17T12:49:51.600 に答える