質問

私もトラブルとウェブアプリケーションコミュニケーショWCFサービスこれが私のシナリオ:

  • ウェブアプリ"、"データサーバは、企業内イントラネット部分のドメイン"のイントラネット"
  • ウェブアプリ"B"が展開されたサーバーのDMZらされながら、インターネットのドメイン"エクストラネット"
  • ファイアウォールとの間には二つのドメインがあり、信頼関係です。
  • "A"であWCFサービス"B"、wsHttpBinding
  • WCFサービス"B"の輸送-保SSLにIIS.
  • を用いてユーザー名認証の行動認証"の"

このクラスは、サーバとの結合構成:

">

<binding name="UsernameWithTransport">
  <security mode="TransportWithMessageCredential">
    <message clientCredentialType="UserName"
      negotiateServiceCredential="false" />
  </security>
</binding>   </wsHttpBinding>

" もう作品における私の試験環境は、二つのドメインを生産。しかし生産環境を取得します醜いエラー時"の"通話"B"である:


    System.ServiceModel.Security.MessageSecurityException: An unsecured or incorrectly secured fault was received from the other party. See the inner FaultException for the fault code and detail. ---> System.ServiceModel.FaultException: An error occurred when verifying security for the message.

Server stack trace: 
at System.ServiceModel.Channels.SecurityChannelFactory`1.SecurityRequestChannel.ProcessReply(Message reply, SecurityProtocolCorrelationState correlationState, TimeSpan timeout)
at System.ServiceModel.Channels.SecurityChannelFactory`1.SecurityRequestChannel.Request(Message message, TimeSpan timeout)
at System.ServiceModel.Security.SecuritySessionSecurityTokenProvider.DoOperation(SecuritySessionOperation operation, EndpointAddress target, Uri via, SecurityToken currentToken, TimeSpan timeout)
at System.ServiceModel.Security.SecuritySessionSecurityTokenProvider.GetTokenCore(TimeSpan timeout)
at System.IdentityModel.Selectors.SecurityTokenProvider.GetToken(TimeSpan timeout)
at System.ServiceModel.Security.SecuritySessionClientSettings`1.ClientSecuritySessionChannel.OnOpen(TimeSpan timeout)
at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
at System.ServiceModel.Channels.ServiceChannel.OnOpen(TimeSpan timeout)
at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
at System.ServiceModel.Channels.ServiceChannel.CallOpenOnce.System.ServiceModel.Channels.ServiceChannel.ICallOnce.Call(ServiceChannel channel, TimeSpan timeout)
at System.ServiceModel.Channels.ServiceChannel.CallOnceManager.CallOnce(TimeSpan timeout, CallOnceManager cascade)
at System.ServiceModel.Channels.ServiceChannel.EnsureOpened(TimeSpan timeout)
at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs)
at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)

Exception rethrown at [0]: 
at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)

最初に思った問題の時間の同期サーバーかを再現●同一の例外試験環境の変化により時計とdifferece10分Unfortunallyことはできませんが、問題の原因に生産のサーバーに期待しています。

情報りますようお願い申し上げ!!

役に立ちましたか?

解決

最後にこのsoveの問題は、このアプリのプールアイデンティティがありましたが書"C:\Windows emp"はないので、アクセス権を表します。

こMessageSecurityExceptionトロント、モントリオールのような例外をスローすることができた多くの問題点があります。の実例を追加しましたserviceDebugの動作をサービスをconfigを見ることがeventviewer詳細な情報のためのエラーになります。

このデバッグconfig:


<serviceBehaviors>
<behavior name="ServiceBehavior">
 <serviceMetadata httpGetEnabled="false" httpsGetEnabled="true" />
 <serviceDebug includeExceptionDetailInFaults="true" />
 <serviceSecurityAudit auditLogLocation="Application"
  suppressAuditFailure="false"
  serviceAuthorizationAuditLevel="None"
  messageAuthenticationAuditLevel="SuccessOrFailure" />
</behavior>


感謝!

他のヒント

のために、匿名のユーザー名または証明書の顧客資格の種類の設定この物件[negotiateservicecredential]falseの場合はこのサービス証明書利用可能にする必要があるお客様のバンドとライアントを指定する必要がありますサービスの証明書を利用します。

http://msdn.microsoft.com/en-us/library/system.servicemodel.messagesecurityoverhttp.negotiateservicecredential.aspx

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top