WCF отказывается присоединять ClientCredentials к запросам

#vb.net #wcf #soap #wcf-security

#vb.net #wcf #soap #wcf-безопасность

Вопрос:

У меня есть веб-сервис, с которым я пытаюсь взаимодействовать, однако независимо от того, что я пытаюсь, он отказывается отправлять учетные данные клиентов вместе с запросом.

Блок безопасности в моем app.config выглядит следующим образом

 <security mode="Transport">
    <transport clientCredentialType="None" proxyCredentialType="None" realm="" />
    <message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
  

Затем я использую служебный прокси следующим образом:

 Dim MyUploadEvent As New EventUploadWSv1.EventUploadWSv1PortTypeClient("IEventUploadWSv1Port")
Dim request As New EventUploadWSv1.webservice_source_event_FileUploadRequest

' First Thing I tried
MyUploadEvent.ClientCredentials.UserName.UserName = "..."
MyUploadEvent.ClientCredentials.UserName.Password = "..."

' Also Tried this based on a question here and a couple of blogs
'Dim defaultCredentials As ClientCredentials
'Dim loginCredentials As New ClientCredentials()

'loginCredentials.UserName.UserName = "..."
'loginCredentials.UserName.Password = "..."

'defaultCredentials = MyUploadEvent.Endpoint.Behaviors.Find(Of ClientCredentials)()
'MyUploadEvent.Endpoint.Behaviors.Remove(defaultCredentials)
'MyUploadEvent.Endpoint.Behaviors.Insert(0, loginCredentials)

' Configure Request Object

' This throws an exception
MyUploadEvent.fileUpload(request)
  

Я также пытался использовать любое другое поле ClientCredentials (MyUploadEvent.ClientCredentials и MyUploadEvent.ClientFactory.ClientCredentials) но сервер продолжает возвращать сообщение о том, что информация для аутентификации SOAP не прикреплена. Я проверил сообщение, отправляемое по проводам, и нигде не упоминается имя пользователя или пароль. Я явно упускаю здесь что-то, чего не должно быть.

Ответ №1:

Вы должны использовать TransportWithMessageCredential режим безопасности. Транспорт просто использует только конфигурации, определенные в Transport элементе, а Message элемент полностью игнорируется..