WCF クライアント サービス コールに署名して暗号化するにはどうすればよいですか (仕様から: すべてのメッセージは、WS-Security X.509 トークン プロファイルに対応して署名および暗号化されます。仕様は、こちらで確認できます)。
SOAP 1.1 と WS-Security を使用する必要があります。このサービスはサード パーティによって提供されており、サード パーティが Java (IBM DataPower) を使用して記述したものであると確信しています (とにかく WCf ではありません)。
私は次のことを試しましたが、私が読んだことのほとんどは、クライアントが暗号化されているものを決定せず、これはサービス保護レベル (SignAndEncrypt) によって定義されていると述べているため、間違った質問をする場合だと思います。暗号化に使用する必要がある X509SecurityToken への参照も見ましたが、これは古い .net だと思います。
とにかく、これは私がこれまでに持っているものです:
' Create the binding.
Dim myBinding As New BasicHttpBinding() ' FOR SOAP 1.1
myBinding.Security.Mode = BasicHttpSecurityMode.TransportWithMessageCredential
myBinding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.Certificate
myBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate
' Create the endpoint address.
Dim ea As New EndpointAddress("https://removed")
' Create the client.
Dim starClientProxy As New wcfStarServiceProxy.starTransportPortTypesClient(myBinding, ea)
' Specify a certificate to use for authenticating the client.
starClientProxy.ClientCredentials.ClientCertificate.SetCertificate(StoreLocation.CurrentUser, StoreName.My, X509FindType.FindBySubjectName, "removed")
'Cert used for encryption
starClientProxy.ClientCredentials.ServiceCertificate.SetDefaultCertificate(StoreLocation.CurrentUser, StoreName.AddressBook, X509FindType.FindBySubjectName, "removed")
だから今、それは自動的に暗号化する必要がありますか? 設定する必要があるものが見つかりません
'call the service
Dim response As wcfStarServiceProxy.AcknowledgeRepairOrderPayload = starClientProxy.ProcessMessage(payload)
したがって、リクエストの署名には成功したと思いますが、本文は暗号化されていません。本文を暗号化するにはどうすればよいですか?