【问题标题】:Need a way to authenticate to Exchange Web Services需要一种对 Exchange Web 服务进行身份验证的方法
【发布时间】:2010-09-15 19:11:19
【问题描述】:

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

为了使这一切正常工作,必须将经过身份验证的用户凭据发送到 Web 服务。到目前为止,我发现有两种方法可以实现这一点:1)传递每个用户的用户名和密码,2)模拟用户使用 DefaultCredentials。 DefaultCredentials 选项对我们不起作用,因为我们不允许模拟用户。

有人知道另一种方法吗?

【问题讨论】:

  • 看来我们需要属于每个约会所有者的凭据才能更新约会。仍在调查。

标签: web-services exchange-server exchangewebservices


【解决方案1】:

如果我理解正确,经理将使用该应用程序并以他自己的身份向 EWS 进行身份验证。由于权限不足,EWS 将无法更新其他用户的邮箱。

让管理员访问每个用户的邮箱怎么样?

(或者我是否遗漏了大部分问题?)

【讨论】:

    【解决方案2】:

    是否有公司政策限制阻止您使用假冒?您指的是 Windows 模拟还是 Exchange 模拟?

    根据您不能使用的模拟,替代方法可能是委托访问。

    如果目标是让经理查看多个邮箱,这里有一些选项:

    (1) 将员工邮箱的代理访问权限授予经理。根据代表访问的级别,这将允许经理查看员工邮箱并根据需要进行编辑。这种方法有一个警告,取决于授予访问权限的内容/方式,代表(员工)可以删除访问权限,并阻止经理查看他们的日历。

    对于使用委托访问的身份验证,假设使用 Web 服务的应用程序在管理器的上下文中运行,您应该能够使用 DefaultCredentials。

    (2) 创建一个具有模拟权限或委派员工邮箱访问权限的服务帐户。然后以服务帐户登录。

    还有,这里有一些你可能会觉得有用的链接......

    【讨论】:

      【解决方案3】:

      如果用户要登录到他们自己的机器上,并且这些凭据很可能在凭据缓存中可用,您可以从从那里获得的 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;   
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-07-28
        • 1970-01-01
        • 1970-01-01
        • 2011-09-20
        • 1970-01-01
        • 2019-07-28
        • 1970-01-01
        相关资源
        最近更新 更多