【发布时间】:2018-11-21 14:47:21
【问题描述】:
我正在开发一个 .NET 项目。在这个项目的控制器中,我正在调用一个指定身份验证的外部 API,以这种方式:
private NetworkCredential myCreds = new NetworkCredential("MYUSERNAME", "MYPASSWORD", "MYDOMAIN");
private CredentialCache = new CredentialCache();
string jsonRequest = urlBaseProtocolloApi + "/api/MY_ENDPOINT";
credCache.Add(new Uri(jsonRequest), "NTLM", myCreds);
HttpWebRequest spRequest = (HttpWebRequest)HttpWebRequest.Create(jsonRequest);
spRequest.Credentials = credCache;
spRequest.UserAgent = "Mozilla/4.0+(compatible;+MSIE+5.01;+Windows+NT+5.0";
spRequest.Method = "GET";
spRequest.Accept = "application/json;odata=verbose";
ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
HttpWebResponse endpointResponse = (HttpWebResponse)spRequest.GetResponse();
效果很好。
如您所见,我正在使用此 NTLM 协议对调用的 API 执行身份验证。
我的问题是,出于测试原因,我想使用 curl 执行此调用,而不是从我的 .NET 控制器传递。
我是这样尝试的:
curl -X POST -k -d @invio_a_protocollo.json https://my_machine:13003/API_CONTEXT/api/MY_ENDPOINT --header "Content-Type:application/json
但显然,由于我没有传递凭据,因此我收到了以下错误消息:
{"Message":"Authorization has been denied for this request."}
如何尝试在我的 curl 请求中设置此 NTLM?
【问题讨论】:
标签: .net curl credentials ntlm