使用Microsoft.Graph时如何通过NTLM进行身份验证?

时间:2018-11-23 13:35:47

标签: c# .net-core microsoft-graph ntlm

我们正在使用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?)

0 个答案:

没有答案