2011-01-24 41 views
1

共有環境でホストされているWCFサービスを取得しました(Webホスティング会社からスペースを借りていますが、専用のアプリケーションプールがあります) .net wcfサービスを呼び出すWebアプリケーション。どちらのプロジェクトも.NET 4プロジェクトです。認証が失敗したためにセキュリティトークンの要求を満たすことができません

VS2010からWebアプリケーションを実行すると、簡単にwcf呼び出しを行うことができます。しかし、私はその共有環境でウェブサイトを公開し、そこからwcf呼び出しを行うと例外が発生します。

例外の詳細:

[FaultException:認証が失敗したため、セキュリティトークンの要求を満たすことができなかった。】 System.ServiceModel.Security.SecurityUtils.ThrowIfNegotiationFault(メッセージメッセージ、EndpointAddress対象)5499790 システム。 ServiceModel.Security.SspiNegotiationTokenProvider.GetNextOutgoingMessageBody(メッセージincomingMessage、SspiNegotiationTokenProviderState sspiState)+49

[SecurityNegotiationException:発呼者がサービスによって認証されなかった。] System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessa GE(IMessageがreqMsg、IMessageがretMsg)9464367 System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(のMessageData & msgData、のInt32型)345

私もそれはあまりにも動作しますが、私のローカルマシン上でWebサイトを公開します。ここで

は、サーバー側で私の設定です:

<wsHttpBinding> 
      <binding name="wsHttpBinding" closeTimeout="00:01:00" 
        openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" 
        transactionFlow="false" 
        hostNameComparisonMode="StrongWildcard" 
        maxBufferPoolSize="2147483647" 
        maxReceivedMessageSize="2147483647"> 
       <readerQuotas maxDepth="2147483647" 
              maxStringContentLength="2147483647" 
              maxArrayLength="2147483647" 
              maxBytesPerRead="2147483647" 
              maxNameTableCharCount="2147483647" /> 
      </binding> 
     </wsHttpBinding> 

クライアント側コード:

factory.Credentials.Windows.Username = "user"; 
factory.Credentials.Windows.Password = "psw"; 
factory = new ChannelFactory<IService>(binding, serviceAddress); 
factory.Open(); 
service = factory.CreateChannel(); 

私が代わりにbasicHttpBindingのwsHttpBindingを使用したい、と私はいくつかのセキュリティが必要ですので、私はいけませんセキュリティモードを[なし]に設定します。

IISバージョンはWindows 2008 R2では7であり、匿名認証を許可するように設定されています。 Asp.net偽装は無効です。

VS2010からウェブサイトプロジェクトを実行すると動作しないため、これらの設定に何か問題があるとは思われません。

ありがとうございました。

Xiaosu

+0

urセキュリティモードとは何ですか? – Aliostad

+0

両側のセキュリティモード: <トランスポートclientCredentialType = "Windows" proxyCredentialType = "None" realm = "" /> Xiaosu

答えて

3

Windowsクライアントの資格情報は、クライアントとサーバーの両方が(それがウェブサイトやサービスを意味する)同じWindowsドメインまたは同じコンピュータ上にある場合にのみサポートされています。 SSPIネゴシエーションまたはKerberosネゴシエーションは、信頼できないコンピュータ/ドメイン間では機能しません。

関連する問題