【发布时间】:2011-08-31 01:17:12
【问题描述】:
我使用 HTTPS 开发了一个带有自定义 UserNamePasswordValidator 和 basicHttpBinding 的 WCF 服务。它适用于 .Net 客户端,使用 ClientCredentials 发送用户名和密码以进行身份验证。
但是,我需要从 Delphi XE 客户端调用它。如何使用 Delphi 发送等效的 .Net ClientCredentials?那可能吗?如果是,怎么做?如果不是,是否有替代方案?
Tks
编辑
以下是我在 .Net 中的客户端代码:
EndpointAddress oTransac = new EndpointAddress(GetAddress());
using (WebServiceClient oClient = new WebServiceClient ("httpbasic", oTransac))
{
oClient.ClientCredentials.UserName.UserName = "username";
oClient.ClientCredentials.UserName.Password = "password";
oClient.DoStuff();
}
编辑
我一直在做一些研究,我已经能够使用 SOAP Hearders 在 Delphi 和旧的 asmx Web 服务之间进行身份验证。我找到了下面的文章。使用本文的技术,我能否实现与旧的 [WebMethod] [System.Web.Services.Protocols.SoapHeader("SoapHeader")] 相同的行为?
编辑赏金
得到标记为赏金的正确答案,我希望能够在服务器端使用 WCF Service UserNamePasswordValidator 从 Delphi 调用 Web 服务。
【问题讨论】:
-
您可以通过 http 标头发送凭据对吗?
-
在 Delphi 中,是的...但由于它通过 HTTPS,我无法使用 Fiddler 读取消息中的 SOAP 标头,所以我不知道要发送什么。
-
你知道如何在 .Net 代码中手动格式化 SOAP Header 吗?如果你这样做,我也许可以将它转换为 Delphi。任何帮助都是帮助! Tks
-
看看 WCFextras wcfextras.codeplex.com 和 SoapHeader 类。 msdn.microsoft.com/en-us/library/…
-
有趣。我必须禁用 web.config 中的所有 WCF 默认安全配置,例如 TransportWithMessageCredential 和 UserNamePasswordValidator,然后通过 SOAP Header 手动正确地执行?
标签: wcf delphi authentication soapheader