コードでサービスエンドポイントの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>
編集中のため、いくつかの同等のものを見つけるために必要なものです私は両方のために必要なので、ベルとトランスポートレベル。
これは私が思っていたものですが、サービスによって選択されません。 – dice
ああ、トランスポートセキュリティを使用しています。あなたが聴いているポートは、どの証明書が使用されているか、使用しているOSはどれですか? –
現在WS 2003も、WS 2008を使用します - ポートについての良い点。 – dice