【发布时间】:2015-02-13 11:15:33
【问题描述】:
我有一个WCF-Service 我想通过Delphi-Client 访问。现在我的问题是,我必须使用 Windows Authentication 并且不知道在哪里告诉 Delphi-Client 自动使用这些凭据。
只有当我在与 WCF 相同的机器上启动客户端时它才有效(当然)。否则,我会收到带有错误 401(未经授权)的 ESOAPHTTPException。
在C#-Client 中,它只是一些类似的配置
<transport clientCredentialType="Windows" />
但是如何配置 Delphi 客户端以使用 Windows 凭据?
编辑:
我在 Delphi 中为测试它是否正常工作所做的只是导入 wsdl 并执行以下操作:
procedure TForm1.Button1Click(Sender: TObject);
var
trans: IService;
begin
trans := Service_Transfer.GetIService();
Label1.Caption := trans.GetPath;
end;
【问题讨论】:
-
您没有显示代码,因此很难提供帮助。如何连接到 WCF 服务?你是如何创建代理的?你为它配置了什么?代理不可能指定凭据。无论如何,所有桌面应用程序都使用当前用户的凭据。如果应用程序在本地而不是远程工作,您可能使用本地帐户而不是域帐户登录。
-
你用的是什么delphi版本?
-
您可以通过 THTTPRIO.Webnode 传递凭据,格式为:域\用户
-
好问题,我从来没有找到解决方案如何做到这一点,我遇到了同样的问题,我最终制作了一个执行 WCF 调用的 .NET COM DLL...
-
SOAP 代表标准 OAP...但是没有什么比 WCF 实现的 SOAP 更标准的了。它在 WCF 客户端上运行良好,但即使在 Java 上,除了最简单的模式外,我们在使用 WCF SOAP 服务器时也遇到了问题。一旦包含凭据,这就是一场噩梦……即使是.Net 客户端顺便说一句……最后,我们通常编写一些托管 COM 组件的 C# dll,我们从 Delphi 调用这些组件。就像@whosrdaddy...只是一个 PITA。
标签: wcf delphi soap windows-authentication