Exchange Online での基本認証の廃止 する件

Azure
スポンサーリンク

たまには技術者ライクに最近調べたことをメモ書きします。

内容は、Exchange Web サービス (EWS)で基本認証ができなくなるのでどうしよっか?!バッチでちょっとメール落とすのに使ってんだけど!!!というお話です。

Microsoft 365 を利用している方には今更間ありますが、ちょっと対応が必要なりました。

 

結論ですが、対応方法は以下の2つです。

  • EWSを継続利用するため、OAuth2の認証方式に変更する。
  • 推奨されているサービスのMicrosoft Graphへ移行する。

 

今回は1つめのOAuth2への変更方法について書いていきます。

まずは概要からです。

概要

MSサイトから転記します。

基本認証が無効化されるので、該当のサービスで基本認証を利用している場合は、対応が必要です。

2021 年 9 月 に、2022 年 10 月 1 日より、Exchange Online の Outlook、EWS、RPS、POP、IMAP、EAS プロトコルの基本認証の無効化を開始すると発表しました。 SMTP 認証が使用されていない場合も無効になります。

詳しくはMSのサイトを確認してみてください。

Exchange Online での基本認証の廃止
サーバーでの基本認証の廃止についてExchange Online

 

対応策

以下に記載の通り、新サービスを利用するか、EWSを使い続けるかの2つ方法があるよ。と記載されています。

In 2018, we announced that Exchange Web Services would no longer receive feature updates and we recommended that application developers switch to using Microsoft Graph.

翻訳すると、

2018年に、Exchange Webサービスが機能の更新を受け取らないことを発表し、アプリケーション開発者がMicrosoftGraphの使用に切り替えることをお勧めしました。

 

Many applications have successfully moved to Graph, but for those applications that have not, it’s noteworthy that EWS already fully supports Modern authentication. So if you can’t migrate to Graph yet, you can switch to using Modern authentication with EWS, knowing that EWS will eventually be deprecated.

翻訳すると

多くのアプリケーションが正常にGraphに移行しましたが、移行していないアプリケーションの場合、EWSがすでにModern認証を完全にサポートしていることは注目に値します。 したがって、まだGraphに移行できない場合は、EWSが最終的に非推奨になることを認識して、EWSでの最新の認証の使用に切り替えることができます。

 

詳細はMSサイトを確認してみてください。

Deprecation of Basic authentication in Exchange Online
Learn about deprecation of Basic authentication in Exchange Online

 

 

検証

今回は、EWSの認証切り替え方法で進めます。

以下、手順となります。

  1. アプリケーションをAzureActiveDirectoryに登録します。

  2. アプリのみの認証用にアプリケーションを構成します。

  3. 認証トークンを取得するためのコードを追加します。

  4. EWSリクエストに認証トークンを追加します。

  5. プログラムを動かします。

 

5.のプログラムはGitHubのサンプルを使います。

※プログラムの概要としては、MS365へアクセスしてメールのタイトルを取得します。

 

参考にしたサイトは以下です。

OAuth を使用して EWS アプリケーションを認証する
EWS Managed API アプリケーションで、OAuth 認証を使用する方法について説明します。
GitHub - sndpkj/ews-oauth2-dotnet-core: Dotnet core project to connect to Microsoft Exchange Online (Office 365) using EWS (Exchange Web Services) with OAuth2 and read emails
Dotnet core project to connect to Microsoft Exchange Online (Office 365) using EWS (Exchange Web Services) with OAuth2 and read emails - GitHub - sndpkj/ews-oau...

 

 

アプリケーションをAzureActiveDirectoryに登録します。

認証の許可設定が必要になるのでまずはAzureAD側の手続きを行います。

まずは、Azure ポータルへログインしましょう。当然ですが、Azure側で設定するのでログインアカウントが必要ですよ。

ホーム – Microsoft Azure

ログインできたら以下の手順で進めます。

  1. Azureポータルにログインし、左側のパネルから[AzureActiveDirecotry]を選択します。
  2. 新規登録アプリ登録をクリックします。

  3. アプリケーションに名前を付けます。アカウントの種類を選択します(要件に応じて)。[リダイレクトURI ]で、パブリック クライアント/ネイティブ(モバイルとデスクトップ)値を選択して設定しurn:ietf:wg:oauth:2.0:oob、[登録]をクリックします。

アプリのみの認証用にアプリケーションを構成する

以下作成したアプリの設定です。

  1. [管理]の下の左側のナビゲーションで[マニフェスト]を選択します。

  2. マニフェストでrequiredResourceAccessプロパティを見つけ、角かっこ([])内に以下を追加して保存します。念のため繰り返しますが、元からあるものは消さずに追加しましょう!

{
“resourceAppId”: “00000002-0000-0ff1-ce00-000000000000”,
“resourceAccess”: [
{
“id”: “dc890d15-9560-4a4c-9b7f-a736ec74ec40”,
“type”: “Role”
}
]
}

以下のMSサイト参照

OAuth を使用して EWS アプリケーションを認証する
EWS Managed API アプリケーションで、OAuth 認証を使用する方法について説明します。
  1. [管理]で[API権限]を選択します。full_access_as_app権限がリストされていることを確認します。※2で追加した内容が反映されています。
  2. [管理者の同意を付与する]を選択し、[同意]ダイアログに同意します。

  3. [管理]の下の左側のナビゲーションで[証明書とシークレット]を選択します。

  4. [新しいクライアントシークレット]を選択し、簡単な説明を入力して、[追加]を選択します。

  5. 新しく追加されたクライアントシークレットの値をコピーして保存します。セキュリティ上の理由から、後で表示することはできません。※シークレットIDではないですのであしからず。

 

認証トークンを取得するためのコードを追加する

まずは、GITHUBからソースを落としましょう。検証用に使います。

GitHub - sndpkj/ews-oauth2-dotnet-core: Dotnet core project to connect to Microsoft Exchange Online (Office 365) using EWS (Exchange Web Services) with OAuth2 and read emails
Dotnet core project to connect to Microsoft Exchange Online (Office 365) using EWS (Exchange Web Services) with OAuth2 and read emails - GitHub - sndpkj/ews-oau...

 

GitHubからダウンロードしたソースを開いて、以下の黒塗りを今回Azureで作成したアプリケーションの内容で修正する。

黒塗り1行目は、「アプリケーション (クライアント) ID」 を設定する。

黒塗り2行目は、「証明書とシークレット」の値 を設定する。

黒塗り3行目は、「ディレクトリ (テナント) ID」を設定する。

また、以下の黒塗りはメールアドレスを設定する。

プログラムの動作検証

修正完了後に、実行するとコンソールに読み取ったメールタイトルが出力されていることが確認できると思います。以下のようにタイトルが表示されれば接続OKです。

まとめ

Exchange Online の基本認証廃止に伴い、EWSのOAuth2対応をしてみました。

Azure側の設定ができれば、認証用のソースを流用することで比較的容易に対応することができそうです。

ですが、MS公式サイトでは、MS graph を推奨していることから、あくまで応急処置レベルの内容と受け止めていた方がよいと思います。

次回はMSGraphの手順をまとめます。

ではでは。

コメント