如何从Exchange Server 2013验证WebApp?

问题描述:

我正在构建一个应用程序,该应用程序使用Exchange API从本地Exchange服务器中提取用户的联系人。目前的做法是要求用户输入用户名为&的密码。如何从Exchange Server 2013验证WebApp?

var service = new ExchangeService(ExchangeVersion.Exchange2013) 
    { 
     Credentials = new WebCredentials(credentials.UserName, credentials.Password), 
     TraceEnabled = false, 
     Url = new Uri("https://mail.*****.com/EWS/Exchange.asmx") 
    }; 

我想知道是否有可能避免要求密码如果用户已经从MS Oulook客户端登录?

这取决于MS Exchange环境。如果Kerberos是在MS Exchange环境中的enabled您可能会使用它(但它取决于您的应用程序如何访问EWS)。微软在这里有一个类似的文章: EWS from a Web Application using Windows Authentication and Impersonation

请注意,Kerberos没有启用默认情况下,并在大多数MS Exchange环境NTLM就位。另请注意,Kerberos只能通过域上下文运行。这意味着,如果运行Outlook(和您的软件)的计算机未加入活动目录域,则Kerberos不起作用(另请参阅here)。但是你可能希望检查你的代码,如果Kerberos可以使用它,如果没有,那么你可以要求用户输入密码(协商认证;你可能希望检查这个here)。