gpt4 book ai didi

security - INDY TIdHttp SSPI 集成安全身份验证问题

转载 作者:行者123 更新时间:2023-12-03 15:30:53 26 4
gpt4 key购买 nike

我正在尝试调用托管在 IIS 上并应用了 Windows 身份验证安全性的 Web 服务。

我正在将 Delphi XE 与 INDY 10 和 TIdHttp 组件结合使用。

如果我传入有效的用户名和密码,我可以成功调用 Web 服务,但我想使用集成安全性,以便它自动使用调用线程中的凭据,而不需要用户手动输入其详细信息。

我已将 IdAuthenticationSSPI 包含在使用子句中,并将 http 请求调用为:

IdHttp1.Request.BasicAuthentication := False;
IdHttp1.HTTPOptions := [hoInProcessAuth];
// IdHttp1.Request.Username := '...'; // including this works
// IdHttp1.Request.Password := '...'; // including this works

IdHttp1.Get(myURL, myOutputStream);

我的理解是,如果没有传递凭据,则使用 IdAuthenticationSSPI 它将模拟调用线程的用户。

我看过 atozedsoftware.newsgroups 上的评论网站表明这是可能的,但不幸的是我收到“HTTP/1.1 401 Unauthorized”。

有人有什么建议吗?

最佳答案

根据 Remy Lebeau 的评论,在解决已知问题之前,INDY 似乎不可能实现这一点。

我已经用另一种方式解决了我的问题,如果其他人感兴趣,我会将其发布在这里。

首先,我导入了 WinHTTP 类型库 (C:\Windows\system32\winhttp.dll) 并将 WinHttp_TLB 添加到 use 子句中。

然后我这样使用它:

var
http: IWinHttpRequest;
url: String;
begin
url := 'my web service';
http := CoWinHttpRequest.Create;
try
http.SetAutoLogonPolicy(0); // Enable SSO
http.Open('GET', url, False);
http.Send(EmptyParam);
ShowMessage(http.ResponseText);
finally
http := nil;
end;
end;

关于security - INDY TIdHttp SSPI 集成安全身份验证问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15111605/

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