Office 365 に EWS で接続する際の注意点について


今回は Office 365 に Exchange Web Services (EWS) で接続する際に別途対応が必要な内容についてご紹介いたします。

On-Premise 環境の Exchange Server 2007 や Exchange Server 2010 に EWS で接続する場合、以下で示すように System.Net.NetworkCredential などを利用して資格情報を設定することが多いかと思います。
(EWS Managed API では System.Net.NetworkCredential 以外に Microsoft.Exchange.WebServices.Data.WebCredentials でも資格情報を設定することができます)

   ——- Exchange Web Services の例 ——-
   ExchangeServiceBinding esb = new ExchangeServiceBinding();
   esb.RequestServerVersionValue = new RequestServerVersion();
   esb.RequestServerVersionValue.Version = ExchangeVersionType.Exchange2010_SP2;
   esb.Credentials = new NetworkCredential(<UserID>, <Password>);
   esb.Url = <Autodiscover で取得した接続先 URL>;

   ———- EWS Managed API の例 ———-
   ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP2);
   service.Credentials = new NetworkCredential(<UserID>, <Password>);
   service.Url = new Uri(<Autodiscover で取得した接続先 URL>);

 ただし、現在の Office 365 環境では EWS の接続は基本認証 (Basic Authentication) のみサポートされており、上記の指定方法のままで接続すると [401 Unauthorized] で失敗します。
以下のように System.Net.CredentialCache を利用して明示的に基本認証が使用されるように構成することで Office 365 環境に EWS で接続することができます。

    ——- Exchange Web Services の例 ——-
   ExchangeServiceBinding esb = new ExchangeServiceBinding();
   esb.RequestServerVersionValue = new RequestServerVersion();
   esb.RequestServerVersionValue.Version = ExchangeVersionType.Exchange2010_SP2;
   CredentialCache cache = new CredentialCache();
   cache.Add(new Uri(<Autodiscover で取得した URL>), “Basic”, new NetworkCredential(<UserID>, <Password>));
   esb.Credentials = cache;
   esb.Url = <Autodiscover で取得した URL>;

   ———- EWS Managed API の例 ———-
   ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP2);
   CredentialCache cache = new CredentialCache();
   cache.Add(new Uri(<Autodiscover で取得した URL>), “Basic”, new NetworkCredential(<UserID>, <Password>));
   service.Credentials = cache;
   service.Url = new Uri(<Autodiscover で取得した接続先 URL>);

 – 補足 (EWS で Autodiscover を実施する場合)
Office 365 では Autodiscover に関しても現在では基本認証のみサポートされておりますが、EWS で Autodiscover を実施する際には System.Net.NetworkCredential を利用して資格情報を設定する方法で特に問題はございません。
本内容については以下のコミュニティ サイトでも議論されていますので必要に応じてご参照ください。

Title: Delay on creation and ability to use EWS
URL: http://community.office365.com/en-us/f/148/t/5147.aspx


Skip to main content