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