您能否指导我如何通过 Exchange Server 本地对 Microsoft EWS API 服务使用 NTLM 身份验证?根据文档 https://learn.microsoft.com/en-us/exchange/client-developer/exchange-web-services/authentication-and-ews-in-exchange,On-Premise Exchange 安装应该使用 NTLM 身份验证。 我尝试过使用 MSAL 库进行身份验证,但如果我没有记错的话,这是用于 OAuth2 的,因此它不适合这种情况。 我的问题如下,如果我使用 NTLM,这是否意味着用户将以明文格式输入用户名和密码,并且我将使用 NetworkCredential 使用 EWS 托管 API 库对他/她进行身份验证?凭证会安全传递吗?这意味着没有像 OAuth2 那样使用云身份提供商。
service.Credentials = new NetworkCredential("username", "password", "domain");
您能否告诉我这是否是正确的方法?就我而言,我不想使用云上的 Exchange 或任何云服务,例如 OAuth2 的身份提供商。 NetworkCredential 和 WebCredentials 有什么区别? 现在,这就是我正在使用的,但仅适用于云 Exchange Server 上可用的 OAuth2,并且它不是我需要的:
ExchangeService ewsService = new ExchangeService();
ewsService.UseDefaultCredentials = true;
ewsService.Url = new Uri("https://outlook.office365.com/EWS/Exchange.asmx");
ewsService.Credentials = new OAuthCredentials(accessToken);
另外一个问题是,我该如何确定我的本地交换服务器的 ewsService.URL 是什么?
非常感谢,
您能否指导我如何通过本地 Exchange Server 对 Microsoft EWS API 服务使用 NTLM 身份验证?
您可能需要更具体地说明您想要执行的操作,如今使用 NTLM 身份验证的情况越来越少,通常是 IWA(集成 Windows 身份验证)https://learn.microsoft.com/en-us/aspnet/web -api/overview/security/integrated-windows-authentication 可以是 Kerberos 或 NTLM。另外,如果它是混合的,那么您也可以使用混合现代身份验证https://learn.microsoft.com/en-us/microsoft-365/enterprise/configure-exchange-server-for-hybrid-modern-authentication?view=o365 -全球。
在代码级别使用 IWA 您所需要的只是
ewsService.UseDefaultCredentials = true;
您构建的应用程序类型及其运行环境是决定此功能是否有效或是否会提示您进行身份验证的决定因素。
我建议从 EWSEditor 开始https://github.com/dseph/EwsEditor/releases这是一个 .net 表单应用程序,您可以使用它来测试 EWS 的工作原理以及您在身份验证方面的期望。还让你测试自动发现等
NetworkCredential 和 WebCredentials 有什么区别
它们都实现了 ICredentials 类,如果您从 UI 传递凭据,则使用 WebCredentials。 EWS 托管 API 是开源的,因此您可以查看 WebCredentials 的源代码 https://github.com/OfficeDev/ews-management-api/blob/25a393dbc68b420d25999bdf0a03c23d86412f57/Credentials/WebCredentials.cs#L33
另外一个问题是,我该如何确定我的本地交换服务器的 ewsService.URL 是什么?
不幸的是,很多很好的例子已经不再存在,你可以使用 wayback machine 来查看其中的一些例子,例如https://web.archive.org/web/20200818034219/https://developermessaging.azurewebsites.net/2012/11/05/ews-from-a-web-application-using-windows-authentication-and-impersonation /