我正在使用 Exchange Web 服务从一个或多个人的日历中查找、创建、更新和删除约会。经理将使用该应用程序查看员工的休假时间,并根据可用性分配约会。
为了使这一切正常工作,必须将经过身份验证的用户凭据发送到 Web 服务。到目前为止,我发现有两种方法可以实现这一点:1)传入每个用户的用户名和密码,2)模拟用户使用 DefaultCredentials。DefaultCredentials 选项对我们不起作用,因为我们不允许模拟用户。
有谁知道另一种方式?
我正在使用 Exchange Web 服务从一个或多个人的日历中查找、创建、更新和删除约会。经理将使用该应用程序查看员工的休假时间,并根据可用性分配约会。
为了使这一切正常工作,必须将经过身份验证的用户凭据发送到 Web 服务。到目前为止,我发现有两种方法可以实现这一点:1)传入每个用户的用户名和密码,2)模拟用户使用 DefaultCredentials。DefaultCredentials 选项对我们不起作用,因为我们不允许模拟用户。
有谁知道另一种方式?
是否有公司政策限制阻止您使用假冒?您指的是 Windows 模拟还是 Exchange 模拟?
根据您不能使用的模拟,替代方法可能是委托访问。
如果目标是让经理查看多个邮箱,这里有一些选项:
(1) 将员工邮箱的代理访问权限授予经理。根据代表访问级别,这将允许经理查看员工邮箱并根据需要进行编辑。关于这种方法有一个警告,取决于授予访问权限的内容/方式,代表(员工)可以删除访问权限,并阻止经理查看他们的日历。
对于使用委托访问的身份验证,假设使用 Web 服务的应用程序在管理器的上下文中运行,您应该能够使用 DefaultCredentials。
(2) 创建一个具有模拟权限或委托对员工邮箱的访问权限的服务帐户。然后以服务帐户登录。
同样,这里有一些您可能会觉得有用的链接...
如果我理解正确,经理将使用该应用程序并以他自己的身份向 EWS 进行身份验证。然后,由于权限不足,EWS 将无法更新其他用户的邮箱。
让管理员访问每个用户的邮箱怎么样?
(或者我错过了问题的很大一部分?)
如果用户要登录到他们自己的机器上,并且这些凭据很可能在凭据缓存中可用,则可以从从那里获得的 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;
}