2012-01-25 18 views
0

コードでサービスエンドポイントのuriを設定し、設定ファイルにセキュリティ動作を設定する必要があります。コードでエンドポイントが作成されたサービスの設定ファイルでwcfサービスの資格情報を設定する

ここでは、サービスが正しいバインディング設定を使用していますが、設定ファイルにcert設定を移動する方法が見つかりません。

編集:いくつかの混乱がここにあった注意 - configファイルには、メッセージレベルのセキュリティのための証明書を設定し、SSLポートは、トランスポートレベルのための証明書を制御します - リチャードBlewettの答え

var svc = new ServiceHost(typeof (MyService), new Uri(s)); 
svc.Authorization.PrincipalPermissionMode = 
        PrincipalPermissionMode.UseWindowsGroups; 
svc.AddServiceEndpoint(typeof(IMyService), new WSHttpBinding("MyBinding"), ""); 
//svc.Credentials.ServiceCertificate.SetCertificate(
// StoreLocation.LocalMachine, 
// StoreName.My, 
// X509FindType.FindBySubjectName, 
// "mycertname" 
// ); 

あたりのようにコメント後世のために、私は質問を更新し、両方のメッセージルをカバーするために答えている:コードから私は、configファイル

<system.serviceModel> 
    <services> 
     <service name="MyNamespace.MyService" behaviorConfiguration="MyBehavior"> 
     </service> 
    </services> 
    <bindings> 
     <wsHttpBinding> 
     <binding name="MyBinding"> 
      <security mode="Transport"> 
      <transport clientCredentialType="Windows"/> 
      </security> 
      <!-- Or for message level security 
      <security mode="Message"> 
      <message clientCredentialType="Certificate"/> 
      </security> 
      --> 
     </binding> 
     </wsHttpBinding> 
    </bindings> 
    </system.serviceModel> 

編集中のため、いくつかの同等のものを見つけるために必要なものです私は両方のために必要なので、ベルとトランスポートレベル。

答えて

0

メッセージセキュリティを確保するため、このサービスの動作は、あなたが、あなたは、トランスポートセキュリティを使用している、しかし

<behaviors> 
     <serviceBehaviors> 
     <behavior> 
      <serviceCredentials> 
      <serviceCertificate findValue="mycertname" 
           x509FindType="FindBySubjectName" 
           storeLocation="LocalMachine" 
           storeName="My"/> 
      </serviceCredentials> 
     </behavior> 
     </serviceBehaviors> 
</behaviors> 

が必要なものを与える必要があります - つまりHTTPSでwsHttpBindingと。したがって、証明書は、ポートに証明書をバインドするhttp.sysの設定で定義されます。 Windows 2008では、netsh.exeを使用してこの構成を調整して表示します。 Windows 2003では、使用頻度の低いツールを使用していますhttpcfg.exe

+0

これは私が思っていたものですが、サービスによって選択されません。 – dice

+0

ああ、トランスポートセキュリティを使用しています。あなたが聴いているポートは、どの証明書が使用されているか、使用しているOSはどれですか? –

+0

現在WS 2003も、WS 2008を使用します - ポートについての良い点。 – dice

関連する問題