1

私は現在、Web サービス (WS1) を呼び出すアプリを持っています。このアプリは、別の Web サービス (WS2) を呼び出して、WS2 でホストされているサーバーに関する情報を取得/設定します。WS2 を直接呼び出すアプリケーションがあるかのように、WS1 から WS2 にユーザー資格情報を渡すことができるようにしたいと考えています。これを行う方法はありますか?

これは私が現在持っているものです:

アプリケーション コード:

BasicHttpBinding basicHttpBinding = 
    new BasicHttpBinding(BasicHttpSecurityMode.TransportCredentialOnly);

basicHttpBinding.Security.Transport.ClientCredentialType = 
    HttpClientCredentialType.Windows;

basicHttpBinding.MaxReceivedMessageSize = 131072000;

AppMgr.AppMgrSoapClient appMgr = 
    new AppMgr.AppMgrSoapClient(
        basicHttpBinding, 
        new EndpointAddress(@"http://SomeServer/Service.asmx"));

appMgr.ClientCredentials.Windows.AllowedImpersonationLevel =
    TokenImpersonationLevel.Impersonation;

appMgr.ChannelFactory.Credentials.Windows.ClientCredential = 
    CredentialCache.DefaultNetworkCredentials;

appMgr.SomeWebMethodCall();

Web サービス 1 コード (「SomeServer」上)

BasicHttpBinding basicHttpBinding = 
    new BasicHttpBinding(BasicHttpSecurityMode.TransportCredentialOnly);

basicHttpBinding.Security.Transport.ClientCredentialType = 
    HttpClientCredentialType.Windows;

basicHttpBinding.MaxReceivedMessageSize = 131072000;

WS2Service.WS2ServiceSoapClient myServiceReference = 
    new WS2Service.WS2ServiceSoapClient(
        basicHttpBinding,
        new EndpointAddress(@"http://SomeOtherServer/AnotherService.asmx"));

myServiceReference.ClientCredentials.Windows.AllowedImpersonationLevel = 
    TokenImpersonationLevel.Impersonation;

myServiceReference.ChannelFactory.Credentials.Windows.ClientCredential = 
    CredentialCache.DefaultNetworkCredentials;

変更する必要があるのは Web サービス コードの最後の行です。それはわかっていますが、何を設定すればよいかわかりません。ClientCredentials.UserName がありますが、ここにパスワードがありません。レベル。

4

2 に答える 2

-3

私は C# でコーディングしていませんが、Web サービス呼び出しを使用して資格情報を投稿する必要があるようです。

そのためには、資格情報を HTTP 要求の本文に追加する必要があります。

于 2012-01-25T19:40:21.180 に答える