gpt4 book ai didi

windows - 如何使用 Windows 身份验证的 Web 服务避免使用 Delphi HTTPRio 调用的登录对话框

转载 作者:可可西里 更新时间:2023-11-01 10:47:31 29 4
gpt4 key购买 nike

我有一个 C# web 服务托管在 IIS 中,启用了 Windows 身份验证,我从 Delphi 7 客户端调用它。

当我调用该方法时,我有一个系统登录对话框,我必须输入我的 Windows 用户名和密码才能进行身份验证。

有没有办法跳过登录对话框并使用当前登录的用户凭据来调用网络服务?

我在帖子中看到很多解释如何通过在 BeforePost 事件中使用 InternetSetOption(...)“注入(inject)”用户名/密码元素来避免使用基本身份验证的登录对话框,但没有关于 Windows 身份验证的内容。我期待一切都能完美地工作......

谢谢

编辑

  • 当前的身份验证类型是 NTLM。

  • 我的应用程序没有任何登录/密码对话框。我指的登录对话框是标题为“Windows安全”的系统登录对话框

  • C# 服务器和 Delphi 客户端在同一台计算机上运行。我的计算机是域的一部分,服务器只会在本地网络中被调用。

编辑 #2当提示登录时,有请求 header :

POST https://vbergeron.info.com/dev-mmcore/SecurityService.svc HTTP/1.1
SOAPAction: "http://mysite.ca/schemas/mobilemed-ws/security/ISecurityService/GetPermissions"
Content-Type: text/xml
User-Agent: mmrdv.exe/4.0.0.0 Windows-7-SP1/6.1.7601 Ultimate/x86
Host: vbergeron.info.com
Content-Length: 366
Connection: Keep-Alive
Cache-Control: no-cache

这是响应 header :

HTTP/1.1 401 Unauthorized
Cache-Control: private
Server: Microsoft-IIS/7.5
X-AspNet-Version: 4.0.30319
WWW-Authenticate: NTLM
WWW-Authenticate: Negotiate
X-Powered-By: ASP.NET
Date: Fri, 07 Jun 2013 14:38:35 GMT
Content-Length: 0
Proxy-Support: Session-Based-Authentication

因此 HTTPRio 不会正确“处理”NTLM header 。它应该捕获 401 并重新发送包含身份验证信息的请求......对吗?

最佳答案

对于带有 NTLM 的 HTTPrio(参见我的回答 https://stackoverflow.com/a/1081582/80901):

在 THTTPRio 组件的 WebNode 子组件的用户名属性中,使用域名后跟反斜杠和用户名:

'域\用户名'

在设计时输入 WSDL URL 后,HTTPRIO 组件将列出可用的端口和服务。

在 HTTP 代理 ( Don's Proxy ) 中,NTLM 显示为请求身份验证类型。

关于windows - 如何使用 Windows 身份验证的 Web 服务避免使用 Delphi HTTPRio 调用的登录对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16967445/

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