4

「NETWORK SERVICE」としてアプリケーション プールで実行されている Web アプリケーションがあります。Web アプリケーションは、別の Web サーバー上のサービス (.svc) に接続します。他の Web サーバーにも、「NETWORK SERVICE」としてホストされているサービスがあります。これがデフォルトだと思います。

次のエンドポイントは、他の場所で実行すると完全に機能します。

<endpoint address="http://server123/UnitTrustService/UnitTrustService.svc"
  binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_UnitTrustService"
  contract="UnitTrustServiceReference.UnitTrustService" name="WSHttpBinding_UnitTrustService">
 <identity>
  <servicePrincipalName value="server123" />
 </identity>
</endpoint>

残念ながら、Web サイトから実行すると、次のエラーが発生します。

        System.ServiceModel.Security.MessageSecurityException: 
    The identity check failed for the outgoing message. 
    The expected identity is 'identity(http://schemas.xmlsoap.org/ws/2005/05/identity/right/possessproperty: http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn)' 
for the 'http://server123/UnitTrustService/UnitTrustService.svc' target endpoint. 
Server stack trace: at System.ServiceModel.Security.IdentityVerifier.EnsureIdentity(EndpointAddress serviceReference, AuthorizationContext authorizationContext, String errorString)...

何か案は?まったく同じ構成で、Web サーバー マシン上のローカル システムとしてこれを実行しようとしましたが、完全に動作します。

IISと何か関係がありますか?

よろしくクレイグ。

4

1 に答える 1

4

これは、クライアントのweb.config に問題があることを示している可能性があります。クライアントの を再確認し<identity>ます。たとえば、クライアントの web.config にある次のスニペットの例では、サービスが IDuserPrincipalNameservicePrincipalName. 以前に私を捕まえたのは、見逃すのが簡単な違いです。

<system.serviceModel>
    <client>
      <endpoint address="http://server.domain.com/Services/DoSomething.svc" behaviorConfiguration="EndpointBehavior" binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IDoSomething" contract="Mycontract" name="WSHttpBinding_IDoSomething_Custom_AddSomething">
        <identity>
          <servicePrincipalName value="user@domain.com" />
于 2010-10-13T21:01:29.277 に答える