0

Windows認証を使用してIISでWCF Webサービスをホストしようとしています。制限により、basicHttpBinding &偽装を使用する必要があります(チェーンを介してリソースにアクセスするために発信者の身元を偽装する)。basicHttpBinding、Windpws-Authenticationおよび偽装を使用したWCF Webサービスのアクティベーションエラー

私は宣言私のWCFサービスの動作契約に偽装を有効にしている:

[OperationBehavior(Impersonation = ImpersonationOption.Required)] 

私のweb.configファイルは次のとおりです。ただし

<system.serviceModel> 
     <behaviors> 
     <serviceBehaviors> 
      <behavior> 
      <serviceMetadata httpGetEnabled="true"/> 
      <serviceDebug includeExceptionDetailInFaults="true"/> 
      </behavior> 
     </serviceBehaviors> 
     </behaviors> 
     <bindings> 
     <basicHttpBinding>   
      <binding name="basic">   
      <security mode="TransportCredentialOnly"> 
       <transport clientCredentialType="Windows">    
       </transport>    
      </security>   
      </binding> 
     </basicHttpBinding> 
     </bindings> 
     <serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> 
     <services> 
     <service name="NotesService"> 
      <endpoint address="http://Client1.osp.local:15000/NotesService/NotesService.svc" bindingConfiguration="basic" binding="basicHttpBinding" contract="NotesService.ServiceContract.INotesService"> 
      <identity> 
       <servicePrincipalName value="HTTP/Client1.osp.local:15000"/>    
      </identity>   
      </endpoint>   
     </service> 
     </services> 
    </system.serviceModel> 

、私はアクティベーションエラーを取得しています。私は何が欠けていますか?

私は取得していますエラーは次のとおりです。

The contract operation 'Process' requires Windows identity for automatic 
impersonation. A Windows identity that represents the caller is not provided by 
binding ('BasicHttpBinding','http://tempuri.org/') for contract 
('NotesService','http://tempuri.org/'. 
+0

サービスに関するIDタグは無関係です。クライアントが期待するサービスとの会話をクライアントが検証できるようにするためにクライアント上で使用されます(つまり、サービスはクライアントが期待している正しいアイデンティティを持っています) –

答えて

2

あなたはWCF 4.0を使用していると仮定すると、私はあなたがデフォルトのエンドポイントと呼ばれるWCF 4機能のアーティファクトを見ていると思います。

サービス名には、サービスの完全修飾名(ネームスペースを含む)を指定する必要があります。 NotesServiceがネームスペースにあると仮定すると、ServiceHostを作成すると、それはdoesn; tは設定ファイル内の一致を見つけません。 ServiceHostコンストラクタでHTTPベースアドレスを指定すると、basicHttpBindingがデフォルトのコンフィグレーション(認証なし)で表示され、表示されているエラーが生成されます。

関連する問題