Мы используем пакет 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, но мне неясно, как это сделать.Я попытался
Любая помощь по аутентификации 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?)