Partager via


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: https://community.office365.com/en-us/f/148/t/5147.aspx