Как пройти аутентификацию с NTLM при использовании Microsoft.Graph? - PullRequest
0 голосов
/ 23 ноября 2018

Мы используем пакет Microsoft.Graph для подключения к нашему API Exchange 2016 Graph v2.0.Я пытаюсь выяснить, как создать IAuthenticationProvider для проверки подлинности запросов.Я делаю это внутри приложения ASP.NET Core, используя c #.

. При открытии URL-адресов (например, https://outlook.example.org/api/v2.0/me/calendars) в Chrome мы получаем диалог для аутентификации с использованием имени пользователя и пароля, и если я проверяю запросыс помощью Fiddler я вижу, что NTLM согласовывается для аутентификации.

Так что я предполагаю, что мне нужно создать IAuthenticationProvider, который поддерживает NTLM, но мне неясно, как это сделать.Я попытался

  • Googling для решения, но не нашел соответствующих результатов.
  • Понимание , как работает NTLM , но это не помогаетмного.

Любая помощь по аутентификации NTLM с Microsoft.Graph?

PS.Мне нужно решение, которое будет кросс-платформенным, чтобы оно также могло работать под Linux, Mac и Windows.


В качестве сноски я попытался убедиться, что это действительно проблема аутентификациибыть, создав новый проект с RestSharp и xUnit, и написал этот тест:

[Fact]
public void DoStuff()
{
    var client = new RestSharp.RestClient("https://outlook.example.org/api/v2.0")
    {
        Authenticator = new NtlmAuthenticator("username", "password"),
    };

    var response = client.Execute<dynamic>(new RestRequest("/me/calendars"));
    Assert.NotNull(response.Data);
}

Этот тест проходит, и отладчик показывает мне, что response.Data содержит разумные вещи.Таким образом, с этой настройкой материал NTLM работает.(Не думайте, что я смогу повторно использовать аутентификатор RestSharp NTLM, так как он использует WebRequest под капотом, тогда как Graph SDK, кажется, использует HttpClient?)

...