【问题标题】:WCF Refusing to Attach ClientCredentials to RequestsWCF 拒绝将 ClientCredentials 附加到请求
【发布时间】:2011-11-11 06:28:05
【问题描述】:

我有一个我正在尝试与之交互的 Web 服务,但是无论我尝试什么,它都拒绝将客户端凭据与请求一起发送。

我的 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 身份验证信息。我已经检查了通过网络发送的消息,并且在任何地方都没有提到用户名或密码。我显然在这里遗漏了一些我不应该遗漏的东西。

【问题讨论】:

    标签: vb.net wcf soap wcf-security


    【解决方案1】:

    您必须使用TransportWithMessageCredential 安全模式。传输仅使用在Transport 元素中定义的配置,而Message 元素被完全忽略..

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-21
      • 1970-01-01
      • 2012-05-02
      相关资源
      最近更新 更多