在 Exchange 中的身份验证和 EWS

查找更多信息,帮助你为面向 Exchange 的 EWS 应用程序选择正确的身份验证标准。

身份验证是 Exchange Web 服务 (EWS) 应用程序中的一个关键部分。 Exchange Online、Exchange Online 作为 Office 365 的一部分以及从 Exchange Server 2013 开始的本地版 Exchange 支持标准版 Web 身份验证 协议,以帮助保护应用和 Exchange Server 之间的通讯。

如果你面向 Exchange Online,那么你选择的身份验证方法必须使用 HTTPS 加密应用发出的请求和响应。 即使你可以在 Exchange 本地服务器上使用HTTP,我们建议你使用 HTTPS 加密任何应用发送到 EWS 终结点的请求,以帮助保护应用和 Exchange Server 之间的通讯。

Exchange 提供下列身份验证选项供你选择:

  • OAuth 2.0 (仅Exchange Online)

  • NTLM (仅本地 Exchange)

  • 基本(不在推荐)

你选择的身份验证方法取决于你组织的安全要求,取决于你在使用 Exchange Online 还是本地 Exchange,以及你是否有权限访问可以提供 OAuth 令牌的第三方提供商。 这篇文章提供相关信息,帮助你选择适合你应用的身份验证标准。

OAuth 身份验证

我们推荐所有新应用使用 OAuth 标准连接 Exchange Online 服务。 它在安全性方面优于基本身份验证,所以值得花额外的必需精力将 OAuth 应用到你的应用。 但是,郑重声明,这也存在一些你需要注意的缺点。

表 1. 使用 OAuth 的优点和缺点

优点 缺点
OAuth 是行业标准的身份验证协议。

身份验证由第三方提供商管理。 你的应用程序不需要收集和存储 Exchange 凭据。

你的烦恼减少了,因为你的应用只会从身份验证提供商处收到一个不透明的令牌,因此,你的应用中的安全漏洞只会暴露此令牌,而不是用户的 Exchange 凭据。
OAuth 依赖第三方身份验证提供商。 这会增加你组织或客户的成本。

OAuth 标准比基本身份验证更难实施。

要实施 OAuth,你需要将你的应用与身份验证提供商和 Exchange 服务器进行整合。

为帮助最小化缺点,你可以使用 Azure AD 身份验证库 (ADAL) 来在云或本地验证用户使用 Active Directory 域服务 (AD DS),然后获取到 Exchange 服务器的保护通话的访问令牌。 Exchange Online 要求 Microsoft Azure Active Directory 服务颁发的令牌,该令牌由 ADAL 支持。但是,你也可以使用任何第三方库。

了解更多关于如何在你的 EWS 应用中使用 OAuth 身份验证的信息,参与以下资源:

NTLM 身份验证

NTLM 身份验证仅对 Exchange 本地服务器可用。 对用在公司防火墙内运行的应用,NTLM 身份验证和 .NET Framework 的结合可以通过内嵌的方式验证你的应用。

表 2. 使用 NTLM 身份验证的优点和缺点

优点 缺点
以创新方法在你的 Exchange 服务器上工作。 你可以通过使用Exchange 命令行管理程序 cmdlet配置对 Exchange 服务的访问。

使用 .NET Framework CredentialCache 对象自动获取用户的凭据。

代码示例可用,使用登陆用户的凭据验证到本地 Exchange 服务器。
用户必须登陆到域来使用 NTLM 身份验证。

要访问和用户的域账号不关联的电子邮件账号可能会很困难。

服务应用程序必须有域账号来利用 NTLM 身份验证的优势。

基本身份验证

基本身份验证提供了你的客户端应用程序基本的安全性。 我们建议所有新应用使用 NTLM 或 OAuth 协议进行身份验证,但是基本身份验证也在某些情况下可行。

表 3. 使用基本身份验证的优点和缺点

优点 缺点
以创新方法在你的 Exchange 服务器上工作。 你可以通过使用Exchange 命令行管理程序 cmdlet配置对 Exchange 服务的访问。

Windows 应用可以使用登陆用户的默认凭据。

很多 代码示例可用,它们向你展示如何用基本身份验证调用 EWS。
需要你的应用收集和存储用户的凭据。

如果你想要强制所有用户使用基本身份验证,你必须关闭 NTLM 身份验证。

如果你的应用出现安全漏洞,你的用户的电子邮件地址和密码可能会暴露给入侵者。

你需要决定基本身份验证是否满足你的组织和用户的要求。 如果你想避免过多的设置,比如示例测试或演示应用,基本身份验证是合适的选择。

注意

基本身份验证不在受 EWS 支持,无法连接 Exchange Online。 在你的新的或现有的 EWS 应用上使用 OAuth 身份验证来连接Exchange Online。 对 EWS 的 OAuth 身份验证仅在作为 Microsoft 365 一部分的 Exchange Online 中可用。 使用 OAuth 的 EWS 应用程序必须先通过 Azure Active Directory 注册。

另请参阅