我正在构建一个使用Exchange API从内部部署Exchange服务器获取用户联系人的应用程序。目前的方法是询问用户的用户名和用户名。密码。
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客户端登录?
答案 0 :(得分:0)
这取决于MS Exchange环境。如果MS Exchange环境中的Kerberos为enabled,您可以使用它(但这取决于您的应用程序如何访问EWS)。微软在这里有类似的文章: EWS from a Web Application using Windows Authentication and Impersonation
请注意,默认情况下并未在大多数MS Exchange环境NTLM中启用Kerberos。还要注意,Kerberos仅通过域上下文工作。这意味着如果运行Outlook(和您的软件)的PC未加入活动目录域,则Kerberos不起作用(另请参阅here)。但您可能希望在您的代码中检查它,如果Kerberos可以使用它,如果没有,那么您可以要求用户输入密码(协商身份验证;您可能希望检查此here)。