如何在不使用C#/ UWP中的NetworkCredential的情况下访问API?

时间:2017-07-07 07:04:09

标签: web-services api http asp.net-web-api networkcredentials

我得到了一些APP的API。 当我使用浏览器访问这些API时,浏览器弹出窗口告诉我填写用户名/密码,然后我尝试填写我的用户名/密码,发现我通过了验证! 然后我尝试编写代码

var myClientHandler = new HttpClientHandler();
myClientHandler.Credentials = new NetworkCredential("abc", "!@#");

this._client = new HttpClient(myClientHandler);
this._client.BaseAddress = new Uri("http://api.xxx.com");
var result = await this._client.GetStringAsync("some_api_foo.json");

跑得好!

(我们知道如果没有NetworkCredential,将会有401个未经授权的例外)

但我发现官方APP可以在没有用户登录的情况下访问某些API。它是如何工作的?它是否使用公共帐户?或者是否有另一种访问API的方法?

2 个答案:

答案 0 :(得分:0)

它使用Windows integrated authentication (Kerberos)对您的用户进行身份验证,而不会要求他们提供凭据

答案 1 :(得分:0)

使用Fiddler>检查授权标题是否存在:基本xxxxxxxxxxxxxxxxxxxxxxxxxxxx

xxxxxxxxxxxxxxxxxxxxxxxxxxxx 用户名:密码 Base64 ) 解密它!