ホーム » Office365 » 【Exchange】独自アプリからExchange Onlineへの認証

【Exchange】独自アプリからExchange Onlineへの認証


Exchange Onlineを含む、Office365上のサービスをAPIで接続する際は、最初に認証を行う必要があります。Exchangeの認証方法として、次の3つの方法があります。

  1. Basic認証
  2. NTLM
  3. OAuth

Basic認証はMicrosoftから非推奨とされており、NTLMはオンプレミスのExchange Serverでのみ利用可能です。必然的にExchange OnlineにおいてはOAuthを利用するしかありません。

Office365で独自のアプリケーションからOAuthを利用して認証するためには、Office365に紐づいているAzureADに対し、対象のアプリケーションを事前に登録する必要があります。

AzureADへのアプリケーションの登録方法

Office365のAdmin Centerから、「管理センター」/「Azure AD」を開きます。対象となるディレクトリを選択し、上部の「アプリケーション」を選択します。

画面下部にある「追加」を選択すると、アプリケーションを新規登録できます。

その際に以下の情報を入力します。

  • アプリケーション名
  • 種類(Web/ネイティブ)
  • リダイレクトURL

最後にそのアプリケーションに対する認可の種類を設定します。構成画面に下部にアクセス許可に関する項目がありますので、ここで「アプリケーションの追加」を選択し、Office365のどのサービスに対して、どのようなアクセス権を追加するのかを指定します。

AzureADにアプリケーションを登録すると、クライアントIDが発行されます。独自のアプリケーションでExchange Onlineにログインするためには、このクライアントIDをリクエスト値に指定する必要があるため、メモをとっておきます。

 

アプリケーションの開発

OAuthでの認証は、Microsoft Azure AD Authentication Library(ADAL)が用意されているため、これを利用します。入手先は、NuGetから任意のプロジェクトに対して追加します。NuGetは、VisualStudioの「ツール」/「NuGetパッケージマネージャー」/「パッケージマネージャーコンソール」で利用可能です。

以下コマンドを実行し、ADALを入手します。


PM> Install-Package Microsoft.IdentityModel.Clients.ActiveDirectory

以下はコードサンプル


string authority = "https://login.windows.net/{テナント}";
string clientId = "{クライアントID}";
Uri redirectUri = new Uri("{リダイレクトURL}");
string resourceName = "https://outlook.office365.com";

AuthenticationContext authenticationContext = new AuthenticationContext(authority, false);
AuthenticationResult result = await authenticationContext.AcquireTokenAsync(resourceName, clientId, redirectUri, new PlatformParameters(PromptBehavior.Auto));

ExchangeService service = new ExchangeService();
service.Url = new Uri("https://outlook.office365.com/ews/exchange.asmx")
service.Credentials = new OAuthCredentials(result.AccessToken);

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA