2

我在尝试使用 Perl 做一些需要 C# 中的几行代码的事情时遇到了令人沮丧的事情,即在需要集成 Windows 身份验证的 Windows 服务器上调用 Web 服务。

我找到的最有可能成功的候选者是一个名为 LWP::Authen::Ntlm 的模块,但我在谷歌上搜索的所有示例都要求您明确提供用户名、密码和域。我不想这样做 - 我只想请求使用当前登录用户的凭据,即 .NET 中的 CredentialCache.DefaultCredentials。

你们中的任何一位 Perl 大师都曾经这样做过吗?

谢谢。

4

5 回答 5

1

这里有一个想法:启动一个 iexplore 进程来调用服务器上的脚本,因为 Internet Explorer 在访问同一域上的服务器时使用登录用户作为默认登录。

也许您可以使用 OLE 和此处列出的 Win32 模块来实现某些目标。也许 Win32::API 模块可能会有所帮助。

于 2009-06-24T09:31:31.613 回答
0

我认为 heeen 在 Win32::API 方面走得很好,而且我怀疑您需要滚动自己的用户代理来管理与 IIS 服务器的 NTLM 握手。这并不是那么糟糕,交互是很好理解的。

这闻起来有点像 Samba 也可以帮助您的东西。环顾四周,有很多关于使用 Samba + !IIS 支持集成身份验证的讨论,您只需要另一个方向。

于 2009-07-28T15:06:56.357 回答
0

Web 服务被设计为与平台和操作系统无关。因此,如果您尝试从 Unix/Perl 执行 NTLM(IWA),我认为,它需要将您的身份验证机制重新设计为 WS-Security 规范建议的机制。

于 2009-06-14T13:21:07.983 回答
0

您是否尝试过在 url 中传递用户名和密码。

http://用户名:密码\@$server:8080

于 2009-06-10T18:02:50.650 回答
0

我也一直在为此苦苦挣扎。我有一个使用 Cntlm http://cntlm.sourceforge.net/的可能解决方案,它提供了一个本地代理,该代理将使用哈希进行身份验证。这样,您可以提示用户输入一次密码,然后生成并保存哈希。最好有人构建一个可以做同样事情并使用 CredentialCache.DefaultCredentials 并且不需要用户输入的 Windows 应用程序。

于 2010-04-07T11:38:09.010 回答