需要一种方法来验证Exchange Web服务

时间:2008-10-07 15:42:43

标签: web-services exchange-server exchangewebservices

我正在使用Exchange Web服务从一个或多个人的日历中查找,创建,更新和删除约会。管理人员将使用该应用程序查看员工的休假时间,并根据可用性分配约会。

为了完成所有工作,必须将经过身份验证的用户的凭据发送到Web服务。到目前为止,我发现允许这两种方法是:1)传递每个用户的用户名和密码,2)冒充用户使用DefaultCredentials。 DefaultCredentials选项不适用于我们,因为我们不允许模拟用户。

有没有人知道另一种方式?

3 个答案:

答案 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;   
}