在未经授权的情况下调用RESTful api时出现问题

本文关键字:api 问题 RESTful 调用 授权 情况下 | 更新日期: 2023-09-27 18:25:19

我需要在没有任何授权的情况下调用RESTful API。API使用自己的自定义授权。我可以使用Postman成功访问API,但从我的应用程序中,对完全相同的URL的调用失败,并显示"访问被拒绝"。我能看到的唯一区别是Postman被设置为"无授权"

这是打电话的代码:

var task = client.GetAsync(url)
        .ContinueWith((taskwithresponse) =>
        {
            var response = taskwithresponse.Result;
            var jsonString = response.Content.ReadAsStringAsync();
            jsonString.Wait();
            var model = JsonConvert.DeserializeObject<object>(jsonString.Result).ToString();
        });
        task.Wait();

我已经搜索了一个多小时,找不到任何关于这方面的信息。非常感谢您的帮助。

以下是邮差返回的信头:

Access-Control-Allow-Headers → Content-Type
Access-Control-Allow-Methods → GET, POST, PUT, DELETE, OPTIONS
Access-Control-Allow-Origin → *
Cache-Control → no-cache
Content-Length → 70838
Content-Type → application/json; charset=utf-8
Date → Wed, 02 Dec 2015 18:10:13 GMT
Expires → -1
Persistent-Auth → false
Pragma → no-cache
Server → Microsoft-IIS/7.5
WWW-Authenticate → Negotiate oYG2MIGzoAMKAQChCwYJKoZIgvcSAQICooGeBIGbYIGYBgkqhkiG9xIBAgICAG+BiDCBhaADAgEFoQMCAQ+ieTB3oAMCARKicARuLFrwoBSpoL7PwlX1E3MEnL7ub3KtmgZG2iGIfYqY+QyGXI1btpDaiLIBFstpQeunfY8DvHV/dcTbsVSeGW/ciuM/aZi1nG2AfHjlu6neYlTJTASF2bGv/M1EKkZRDvRoND2uLbfGdiXzrN5+M3U=
X-AspNet-Version →
X-AspNet-Version
Custom header
4.0.30319
X-Powered-By → ASP.NET
X-UA-Compatible → IE=edge

Postman没有发送邮件头。

在未经授权的情况下调用RESTful api时出现问题

看起来rest服务正在使用NTLM或Kerberos安全令牌进行身份验证。邮差正在自动发送windows身份信息。通过C#代码,您必须明确指定Windows Identity作为模拟的Identity令牌。

尝试WebClient而不是HttpClient,并使用默认值:

var wi = (WindowsIdentity)HttpContext.User.Identity;
var wic = wi.Impersonate();
 using (var client = new WebClient { UseDefaultCredentials = true })
    {
        client.DownloadStringAsync(url);
    }
wic.Undo();

如果Async不起作用,则尝试同步方法DownloadString

有关更多详细信息,请参阅来源。