我们使用Microsoft.Graph包连接到Exchange 2016 Graph v2.0 API . 我正在尝试找出如何创建 IAuthenticationProvider 来验证请求 . 我在使用c#的ASP.NET Core应用程序中执行此操作 .

在Chrome中打开网址(例如 https://outlook.example.org/api/v2.0/me/calendars )时,我们会看到一个用户名和密码进行身份验证的对话框,如果我用Fiddler检查请求,我可以看到NTLM已经过协商进行身份验证 .

所以我想我需要构建一个支持NTLM的 IAuthenticationProvider ,但我不清楚如何这样做 . 我试过了

有关Microsoft.Graph的NTLM身份验证的任何帮助吗?

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?)