私は、WS-Security ヘッダーで TLS とユーザー名/パスワードを使用して保護された単純な SOAP 1.1 ack/nack Web サービスを公開する必要があるという要件を持つプロジェクトを持っています。次のカスタム バインディングと動作を作成しました。
<binding name="itkService" closeTimeout="00:10:01" openTimeout="00:10:01"
receiveTimeout="00:10:01" sendTimeout="00:10:00.0000001">
<sslStreamSecurity requireClientCertificate="true" />
<security enableUnsecuredResponse="true" authenticationMode="UserNameOverTransport" includeTimestamp="true" requireSecurityContextCancellation="true">
<localClientSettings maxClockSkew="24.20:31:23.6470000" />
<localServiceSettings maxClockSkew="24.20:31:23.6470000" />
<secureConversationBootstrap authenticationMode="UserNameOverTransport" />
</security>
<customTextMessageEncoding messageVersion="Soap11WSAddressing10" mediaType="text/xml" encoding="utf-8">
<readerQuotas maxStringContentLength="1024" />
</customTextMessageEncoding>
<httpsTransport maxReceivedMessageSize="10485760" keepAliveEnabled="true" maxBufferSize="10485760" />
</binding>
<behavior name="webHttpEnablingBehaviour">
<serviceMetadata httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
<serviceCredentials>
<clientCertificate>
<authentication customCertificateValidatorType="ITKCore.Validation.MyCertificateValidator, ITKCore"
certificateValidationMode="Custom" />
</clientCertificate>
<serviceCertificate findValue="Sub CA" storeLocation="LocalMachine" storeName="TrustedPeople" x509FindType="FindByIssuerName" />
<userNameAuthentication userNamePasswordValidationMode="Custom" customUserNamePasswordValidatorType="ITKCore.Validation.UsernameValidator, ITKCore" />
</serviceCredentials>
</behavior>
ただし、サービス要求の検証ロジックの一部では、提示された TLS 証明書を使用し、サブジェクトの識別名をアクセス制御リストと照合する必要があると述べています。掘り下げてみましたが、実際にトランスポート証明書を取得する方法がわかりません。
WCFでこれをどのように行うかについて誰かアドバイスがありますか?