我正在使用Exchange Web服务从一个或多个人的日历中查找,创建,更新和删除约会。管理人员将使用该应用程序查看员工的休假时间,并根据可用性分配约会。
为了完成所有工作,必须将经过身份验证的用户的凭据发送到Web服务。到目前为止,我发现允许这两种方法是:1)传递每个用户的用户名和密码,2)冒充用户使用DefaultCredentials。 DefaultCredentials选项不适用于我们,因为我们不允许模拟用户。
有没有人知道另一种方式?
答案 0 :(得分:6)
是否有公司政策限制阻止您使用模拟?您是指Windows模仿还是Exchange假冒?
根据您不能使用的模拟,替代方案可能是委托访问。
如果目标是让经理查看多个邮箱,可以选择以下选项:
(1)授予代表对员工邮箱的访问权限。根据委派访问级别,这将允许管理员查看员工邮箱并根据需要进行编辑。关于此方法有一个警告,取决于授予访问权限的方式/方式,委托(员工)可以删除访问权限,并阻止管理员查看其日历。
对于使用委托访问的身份验证,假设使用Web服务的应用程序在管理器的上下文中运行,您应该能够使用DefaultCredentials。
(2)创建一个对员工邮箱具有模拟权限或委派访问权限的服务帐户。然后以服务帐户登录。
同样,这里有一些您可能会觉得有用的链接......
答案 1 :(得分:2)
如果我理解正确,经理将使用该申请并作为他自己对EWS进行身份验证。由于权限不足,EWS将无法更新其他用户的邮箱。
如何让经理访问每个用户的邮箱?
(或者我错过了问题的重要部分?)
答案 2 :(得分:1)
如果用户要登录自己的计算机,并且这些凭据可能在凭证缓存中可用,则可以从从中获取的ICredentials对象构造WebCredential对象:
public static ExchangeService GetService()
{
var webCredentials = new WebCredentials(CredentialCache.DefaultNetworkCredentials);
var service = new ExchangeService(ExchangeVersion);
service.AutodiscoverUrl(Properties.Settings.Default.SmptAccountName);
service.Credentials = credentials;
return service;
}