gpt4 book ai didi

.net - 通过 HTTP 以明文形式将用户名和密码发送到 Web 服务

转载 作者:行者123 更新时间:2023-12-04 05:01:24 27 4
gpt4 key购买 nike

我有一个使用 Web 服务的 VB.NET (2008) 控制台应用程序。我最初开始使用旧的/传统(前 WCF)技术编写它,该技术使用 WSDL.exe(或 Visual Studio 中的“添加 Web 服务”)导入 WSDL,该技术创建基于 System.Web.Services.Protocols.SoapHttpClientProtocol 的类.但是,我很快意识到这不是最好的方法(感谢 John Saunders 在我之前的问题中的评论 -- How to get serialized XML of object passed to web service?)。

所以,我现在已经将我的代码转换为 WCF(使用“添加服务引用”,它创建基于 System.ServiceModel.ClientBase 的类);它的工作原理大致相同,除了一个关键点:安全性。

我使用的 Web 服务是用 Java 编写的;虽然我们(我和开发 Web 服务的团队)都为同一家公司工作,但我对他们发布和公开 Web 服务的方式并没有太多控制权。他们的要求是我通过 HTTP 而不是 HTTPS 传递用户名和密码(基本 HTTP 身份验证)。我知道这不是最安全的方法;但这是一场我现在无法战斗的战斗。

使用旧方法可以很好地工作。但是,如果我尝试通过在 app.config 中进行设置来使用 WCF 执行此操作:

<security mode="Transport">
<transport clientCredentialType="Basic" />
</security>

...并在代码中设置用户名和密码,如下所示:
oServiceClient.ClientCredentials.UserName.UserName = "SomeUsername"
oServiceClient.ClientCredentials.UserName.Password = "SomePassword"

我礼貌地向我抛出了这个异常:
System.ArgumentException: The provided URI scheme 'http' is invalid; expected 'https'. Parameter name: via

所以这很糟糕;在 .NET 3.5 中,搜索 StackOverflow 和其他站点并没有解决这个问题。我发现了我认为可能有希望的东西 ( http://webservices20.blogspot.com/2008/11/introducing-wcf-clearusernamebinding.html );但是,看起来这个解决方案需要在服务端和客户端都进行配置更改。如前所述,我对此的服务器端没有任何控制权。

有没有办法使用基于 WCF 的客户端来完成此操作?还是我需要放弃并回到旧的方式?

编辑:我似乎在这方面取得了一些成功:
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Basic" />
<message clientCredentialType="UserName" />
</security>

但是这种安全模式 (TransportCredentialOnly) 在 Microsoft 帮助文章/教程中似乎没有被引用。我在叫对的树吗?

最佳答案

就我而言,解决方案是将安全模式设置为“TransportCredentialOnly”,如下所示:

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

感谢 evgenyl 促使我将研究开放到其他安全模式;但最终,成功的是“TransportCredentialOnly”而不是“Message”。

关于.net - 通过 HTTP 以明文形式将用户名和密码发送到 Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16116211/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com