У меня есть проект форм xamarin с использованием переносимой библиотеки классов.В этом PCL я ссылаюсь на мою службу WCF, которая размещена на каком-либо сервере.
Привязка wcf - это Basichttpbinding с транспортом безопасности, поскольку PCL не поддерживает wshttpbinding.
Также wcf использует https и i.у меня есть действующий сертификат для этого.
Я хочу защитить сообщения, потому что теперь, если я устанавливаю какой-то вид приложения или упакованный монитор на моем андроиде, при каждом обращении к моему сервису я могу видеть данные XML вчитаемый формат.
Я думал, используя https, я защищал это.Я пытаюсь использовать wcf TransportWithMessageCredential, но мне не удалось войти в мой сервис, потому что xamarin еще не поддерживает эту комбинацию
Итак: (после исследования я выяснил, что)
- PCL не поддерживаетwshttpbinding только basicHttpBinding
- Xamarin.Forms basicHttpBinding не поддерживает безопасность сообщений, а только TransportCredentialOnly
И
- Xamarin не поддерживает TransportWithMessageCredential, но только безопасность транспорта, но только транспортную безопасностьТранспортная безопасность не защищает данные от MITM.
Как другие работают с ксамарином и защищают эти данные?Я что-то пропустил?Какие-либо предложения?
EDITED
Я пытаюсь зашифровать xml-запрос перед отправкой в службу, но происходит сбой каждый раз, когда я изменяю сообщение, например, сxml для закодированных символов (я полагаю, что серверу не удается распознать схему)
Я реализовал IClientMessageInspector на стороне клиента, а также IDispatchMessageInspector на стороне сервера.
Мне нужна помощь, как я могу отправить XML-запрос в зашифрованном виде на сервер ... если я сделаю это здесь, то смогу декодировать его со стороны службы (сервер)
На стороне клиента яиметь следующее
Public Function BeforeSendRequest(ByRef request As Message, channel As IClientChannel) As Object Implements IClientMessageInspector.BeforeSendRequest
Dim Binding As New BasicHttpBinding(BasicHttpSecurityMode.Transport)
Dim ms As MemoryStream = New MemoryStream(System.Text.Encoding.UTF8.GetBytes(EncryptedData(request.ToString)))
Dim RQuotas As Xml.XmlDictionaryReaderQuotas = Binding.ReaderQuotas
Dim reader = Xml.XmlDictionaryReader.CreateTextReader(ms, RQuotas)
request = Message.CreateMessage(reader, Int32.MaxValue, request.Version)
Return Nothing
End Function
Я не уверен, правильно ли я это делаю.Любая помощь приветствуется.