次の方法で共有


Microsoft 365 の大量メールの OAuth 認証

OAuth 認証を使用して SMTP プロトコルに接続し、Office 365 ユーザーの電子メール データにアクセスする方法について説明します。

以下で説明する SMTP プロトコルの OAuth2 サポートは、Microsoft 365 (Office on the webを含む) と Outlook.com ユーザーの両方で使用できます。

OAuth 2.0 プロトコルに慣れていない場合は、Microsoft ID プラットフォームの概要に関する記事の「OAuth 2.0 プロトコル」を参照してください。 OAuth 2.0 プロトコルを実装してユーザーを認証し、セキュリティで保護された API にアクセスする Microsoft 認証ライブラリ (MSAL) の詳細については、「 MSAL の概要」を参照してください。

アプリケーションを登録する

OAuth を使用するには、アプリケーションを Microsoft Entra に登録する必要があります。

Microsoft ID プラットフォームにアプリケーションを登録する」に記載されている手順に従って、新しいアプリケーションを作成します。

  1. 少なくともクラウド アプリケーション管理者としてMicrosoft Entra 管理センターにサインインします。

  2. [Id>Applications>アプリの登録 に移動し、[新しい登録] を選択します。

    新しい登録のスクリーンショット。

  3. アプリケーションの表示名を入力します。 アプリケーションのユーザーは、サインイン中など、アプリを使用するときに表示名が表示される場合があります。 表示名はいつでも変更でき、複数のアプリ登録で同じ名前を共有できます。 アプリの登録によって自動的に生成されるアプリケーション (クライアント) ID は、表示名ではなく、ID プラットフォーム内でアプリを一意に識別します。

    アプリケーションの登録のスクリーンショット。

  4. 登録後、いくつかの ID が作成されます。これらの ID の一部は、後で OAuth 2.0 トークンを取得するために必要になります。

    複数の ID のスクリーンショット。

API アクセス許可を追加する

  1. 左側のメニューで [ API アクセス許可 ] を選択し、[ アクセス許可の追加] を選択します。

    hveoauth API のアクセス許可のスクリーンショット。

  2. organizationが使用する API に移動し、Office 365 Exchange Onlineを検索します。

    organizationが使用する API のスクリーンショット。

  3. [ API のアクセス許可の要求] で、[ アプリケーションのアクセス許可] を選択し、[ Mail.Send] を選択し、[ アクセス許可の追加] を選択します。

  4. API アクセス許可を追加した後、管理者は [ 管理者の同意を付与する] を選択する必要があります。

    管理者の同意の付与のスクリーンショット。

アプリ シークレットでアプリケーションのアクセス許可を使用するため、従来の OAuth サード パーティ アプリケーションを許可するための委任アクセス許可とアプリケーションアクセス許可の両方をサポートしています。

委任のアクセス許可:

  1. [API のアクセス許可] タブで、Office 365 Exchange Online\委任されたアクセス許可から Mail.Send API アクセス許可を追加します。
  2. [ API のアクセス許可 ] タブで、[ 管理者の同意の付与] を選択します。
  3. [ 認証 ] タブで、[ パブリック クライアント フローを許可する] を有効にします。
  4. HVE メール ユーザーの資格情報を使用して、対象ユーザーhttps://outlook.office.com/.defaultのトークンを要求します。

アプリケーションのアクセス許可:

  1. [API のアクセス許可] タブで、Office 365 Exchange Online\アプリケーションのアクセス許可から Mail.Send API アクセス許可を追加します
  2. [ API のアクセス許可 ] タブで、[ 管理者の同意の付与] を選択します。
  3. [ 証明書 & シークレット ] タブで、新しいクライアント シークレットを追加します。
  4. クライアント シークレットを使用して、対象ユーザーのトークンを要求https://outlook.office.com/.default

HVE SMTP プロトコル交換

SMTP サーバー接続を認証するには、クライアントが AUTH コマンドを SASL XOAUTH2 形式で応答する必要があります。 SASL XOAUTH2 は、ユーザー名とアクセス トークンを次の形式で一緒にエンコードします。

base64("user=" + userName + "^Aauth=Bearer " + accessToken + "^A^A") 

^A は、Control + A (%x01) を表します。

たとえば、アクセス トークンEwBAAl3BAAUFFpUAo7J3Ve0bjLBWZWCclRC3EoAAを使用してapplication@contoso.onmicrosoft.comにアクセスするSASL XOAUTH2形式は次のとおりです。

base64("user=application@contoso.onmicrosoft.com^Aauth=Bearer EwBAAl3BAAUFFpUAo7J3Ve0bjLBWZWCclRC3EoAA^A^A") 

認証が成功するクライアントとサーバーのメッセージ交換の例:

[connection begins]

C: auth xoauth2

S: 334

C: dXNlcj1hcHBsaWNhdGlvbkBjb250b3NvLm9ubWljcm9zb2Z0LmNvbQFBdXRoPUJlYXJlciBFd0JBQWwzQkFBVUZGcFVBbzdKM1ZlMGJqTEJXWldDY2xSQzNFb0FBAQE=

S: 235 2.7.0 Authentication successful

[connection continues...]

認証エラーが発生するクライアントとサーバーのメッセージ交換の例:

[connection begins]

C: auth xoauth2

S: 334

C: dXNlcj1hcHBsaWNhdGlvbkBjb250b3NvLm9ubWljcm9zb2Z0LmNvbQFBdXRoPUJlYXJlciBFd0JBQWwzQkFBVUZGcFVBbzdKM1ZlMGJqTEJXWldDY2xSQzNFb0FBAQE=

S: 535 5.7.3 Authentication unsuccessful