Как получить доступ к API без использования NetworkCredential в C#/UWP?
Я получил некоторые из 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 несанкционированное исключение)
Но я узнал, что официальное приложение может получить доступ к некоторым API без входа пользователя. Как это работает? Использует ли он публичный аккаунт? Или есть другой способ доступа к API?
2 ответа
Он использует встроенную проверку подлинности Windows (Kerberos) для проверки подлинности ваших пользователей без запроса их учетных данных.
Использовать Fiddler > проверить наличие заголовка авторизации: Basic xxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxx - это Имя пользователя: Пароль(Base64) Расшифруйте его!