2009-05-19 8 views
0

私はフォームベースの認証でセキュリティを処理する簡単なWebサービスを用意しています。Webアプリケーション経由のWCFフォームベース認証 - 資格渡し

WCFTestService.ServiceClient myService = new 
      WCFTestService.ServiceClient(); 
myService.ClientCredentials.UserName.UserName = "user"; 
myService.ClientCredentials.UserName.Password = "secret"; 
lblResult.Text = myService.GetData(1231); 
myService.Close(); 

私はウェブアプリケーション経由でアクセスしています。だから私は上記を一度やりたいが、セキュリティ/パフォーマンスのためにもう一度やる必要はない。私はをFormsAuthenticationこの文句を言わない作業を使用しているように私はあなたが何をしようとして

//Obtain the authenticated user's Identity and impersonate the original caller 
using (((WindowsIdentity)HttpContext.Current.User.Identity).Impersonate()) 
{ 
    WCFTestService.ServiceClient myService2 = new WCFTestService.ServiceClient(); 
    lblResult.Text = "From Logged On Credentials"+myService2.GetData(1231); 
    myService2.Close(); 
} 

答えて

1

はあなたのクライアントとあなたのサービスの間で「セキュアセッション」を確立です...以下のようなものを考えていたが。これは、wsHttpBindingでのみ機能するコンセプトです。その特定のバインディングを使用していない場合は、動作しません。

セキュリティで保護されたセッションを確立するには、クライアントとサーバーの設定ファイルにいくつかの特定の設定プロパティを設定する必要があります。これらの設定は、ドキュメントを読むことで確実に確認できます( "establishSecurityContext"を探してください)。またはMichele Leroux MSDNのBustumanteの優れたWCF screencast on security fundamentals

本当に:私は安全なセッションを是非使ってみることをお勧めしません。通常の状況下では、コール単位のサービスを使用することをお勧めします。各サービスコールで再認証するためのオーバーヘッドは、実際には無視できます。

マーク