これらのユーザー名とパスワードはどこから来ていますか?Webサイトがすでにフォーム認証を実装している場合は、自分でクレデンシャルの設定をバイパスして、フォーム認証Cookieを使用できます。ユーザーがログインしている場合、CookieはWebサービス呼び出しとともに移動します。反対側でそれを読むために、あなたはいくつかの変更を加える必要があります。
まず、system.ServiceModelセクションでWCFのASP.NET互換モードを有効にする必要があります。
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
</system.serviceModel>
それが完了したら、ASP.NET Cookieを理解したいサービスメソッドごとに、[AspNetCompatibilityRequirements]属性をサービスクラスに追加します。
[ServiceContract]
[AspNetCompatibilityRequirements(
RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class ExampleService
{
}
これで、各メソッド内でHttpContext.Current.User.Identityオブジェクトにアクセスして、ユーザーのIDを検出できます。
認証されたユーザーによって特定のメソッドのみが呼び出されるようにする場合は、PrincipalPermissionを使用できます。
[OperationContract]
[PrincipalPermission(SecurityAction.Demand, Authenticated=true)]
public string Echo()
ボーナスとして、ASP.NETの役割プロバイダーを使用している場合は、それらにもデータが入力され、メソッドでPrincipalPermissionを使用して、特定の役割のメンバーに制限することができます。
[OperationContract]
[PrincipalPermission(SecurityAction.Demand, Role="Administators")]
public string NukeTheSiteFromOrbit()
そして、これは明らかにSilverlight2でも機能します。