OAuth を使用して IMAP、POP、または SMTP 接続を認証するAuthenticate an IMAP, POP or SMTP connection using OAuth

OAuth 認証を使用して IMAP、POP、または SMTP プロトコルに接続し、Office 365 ユーザーの電子メールデータにアクセスする方法について説明します。Learn how to use OAuth authentication to connect with IMAP, POP or SMTP protocols and access email data for Office 365 users.

OAuth2 では、以下に示す IMAP、POP、SMTP プロトコルのサポートは、Outlook.com ユーザーに対してサポートされていません。OAuth2 support for IMAP, POP, SMTP protocols as described below is not supported for Outlook.com users.

OAuth 2.0 に精通していない場合は、まず「 Microsoft identity platform (v2.0)」の概要を参照してください。If you're not familiar with OAuth 2.0, start by reading the Microsoft identity platform (v2.0) overview. このドキュメントでは、Sdk を含む Microsoft identity platform のさまざまなコンポーネントについて説明します。That document introduces you to different components of Microsoft identity platform, including SDKs.

Azure Active Directory によって提供される OAuth 認証サービスを使用して、アプリケーションが IMAP、POP、または SMTP プロトコルを使用して Office 365 で Exchange Online にアクセスできるようにすることができます。You can use the OAuth authentication service provided by Azure Active Directory to enable your application to connect with IMAP, POP or SMTP protocols to access Exchange Online in Office 365. アプリケーションで OAuth を使用するには、次のことを行う必要があります。To use OAuth with your application you need to:

  1. Azure Active Directory にアプリケーションを登録するRegister your application with Azure Active Directory.
  2. Azure Active Directory でアプリケーションを構成します。Configure your application in Azure Active Directory.
  3. トークンサーバーからアクセストークンを取得します。Get an access token from a token server.
  4. アクセストークンを使用して接続要求を認証します。Authenticate connection requests with an access token.

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

OAuth を使用するには、アプリケーションが Azure Active Directory に登録されている必要があります。To use OAuth, an application must be registered with Azure Active Directory.

Microsoft identity platform を使用してアプリケーションを登録する」に記載されている手順に従って、新しいアプリケーションを作成します。Follow the instructions listed in Register an application with the Microsoft identity platform to create a new application.

アプリケーションを構成するConfigure your application

「Configure a client application to access Web api 」に記載されている手順に従います。Follow the instructions listed in Configure a client application to access web APIs

統合するプロトコルに対応する次の1つ以上のアクセス許可のスコープを追加してください。Make sure to add one or more of the following permission scopes that correspond to the protocols you would like to integrate with. アクセス許可の追加ウィザードで、[ Microsoft Graph ] を選択し、[アクセス許可の委任] をクリックして、次のアクセス許可スコープを検索します。In the Add a permission wizard, select Microsoft Graph and then Delegated permissions to find the following permission scopes listed.

プロトコルProtocol アクセス許可の適用範囲Permission scope
IMAPIMAP IMAP.AccessAsUser.All
POPPOP POP.AccessAsUser.All
SMTP 認証SMTP AUTH SMTP.Send

アクセス トークンを取得するGet an access token

Msal クライアントライブラリのいずれかを使用して、クライアントアプリケーションからアクセストークンを取得することができます。You can use one of our MSAL client libraries to fetch an access token from your client application.

または、次の一覧から適切なフローを選択し、対応する手順に従って、基になる identity platform REST Api を呼び出し、アクセストークンを取得することもできます。Alternatively, you can select an appropriate flow from the following list and follow the corresponding steps to call the underlying identity platform REST APIs and retrieve an access token.

  1. OAuth2 認証コードフローOAuth2 authorization code flow
  2. OAuth2 デバイス承認の付与フローOAuth2 Device authorization grant flow

OAuth2 クライアント資格情報の付与フローを介した IMAP、POP、SMTP 認証プロトコルへの OAuth アクセスはサポートされていません。OAuth access to IMAP, POP, SMTP AUTH protocols via OAuth2 client credentials grant flow is not supported. アプリケーションが Microsoft 365 組織のすべてのメールボックスに永続的にアクセスする必要がある場合は、Microsoft Graph Api を使用して、ユーザーなしでアクセスを許可し、詳細なアクセス許可を有効にし、管理者が特定のメールボックスのセットへのアクセスを許可されるようにすることをお勧めします。If your application needs persistent access to all mailboxes in a Microsoft 365 organization, we recommend that you use the Microsoft Graph APIs which allow access without a user, enable granular permissions and let administrators scope such access to a specific set of mailboxes.

アプリケーションを承認してアクセストークンを要求するときには、Outlook リソース Url を含む完全な範囲を指定してください。Make sure to specify the full scopes, including Outlook resource URLs, when authorizing your application and requesting an access token.

プロトコルProtocol アクセス許可のスコープ文字列Permission scope string
IMAPIMAP https://outlook.office.com/IMAP.AccessAsUser.All
POPPOP https://outlook.office.com/POP.AccessAsUser.All
SMTP 認証SMTP AUTH https://outlook.office.com/SMTP.Send

また、 offline_accessスコープを要求することもできます。In addition, you can request for offline_access scope. ユーザーが offline_access スコープを承認すると、アプリは Microsoft identity platform token endpoint から更新トークンを受け取ることができます。When a user approves the offline_access scope, your app can receive refresh tokens from the Microsoft identity platform token endpoint. 更新トークンは長期間の場合があります。Refresh tokens are long-lived. アプリは、新しいアクセストークンを古いものとして期限切れにすることができます。Your app can get new access tokens as older ones expire.

接続要求を認証するAuthenticate connection requests

Office 365 メールサーバーへの接続は、 office 365 の IMAP および POP の電子メール設定を使用して開始できます。You can initiate a connection to Office 365 mail servers using the IMAP and POP email settings for Office 365.

SASL XOAUTH2SASL XOAUTH2

OAuth の統合には、アプリケーションで、アクセストークンのエンコードと送信に SASL XOAUTH2 format を使用する必要があります。OAuth integration with requires your application to use SASL XOAUTH2 format for encoding and transmitting the access token. SASL XOAUTH2 は、次の形式でユーザー名とアクセストークンをエンコードします。SASL XOAUTH2 encodes the username, access token together in the following format:

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

^Aコントロール + a () を表し %x01 ます。^A represents a Control + A (%x01).

たとえば、アクセストークンを使用してアクセスする SASL XOAUTH2 形式は次のように test@contoso.onmicrosoft.com EwBAAl3BAAUFFpUAo7J3Ve0bjLBWZWCclRC3EoAA なります。For example, the SASL XOAUTH2 format to access test@contoso.onmicrosoft.com with access token EwBAAl3BAAUFFpUAo7J3Ve0bjLBWZWCclRC3EoAA is:

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

Base64 エンコード後は、次の文字列に変換されます。After base64 encoding, this translates to the following string. 読みやすくするために改行が挿入されることに注意してください。Note that line breaks are inserted for readability.

dXNlcj10ZXN0QGNvbnRvc28ub25taWNyb3NvZnQuY29tAWF1dGg9QmVhcmVy
IEV3QkFBbDNCQUFVRkZwVUFvN0ozVmUwYmpMQldaV0NjbFJDM0VvQUEBAQ==

Office 365 の共有メールボックスのための SASL XOAUTH2 認証SASL XOAUTH2 authentication for shared mailboxes in Office 365

OAuth を使用した共有メールボックスアクセスの場合、アプリケーションはユーザーの代わりにアクセストークンを取得する必要がありますが、SASL XOAUTH2 encoded string の userName フィールドを共有メールボックスの電子メールアドレスに置き換えます。In case of shared mailbox access using OAuth, application needs to obtain the access token on behalf of a user but replace the userName field in the SASL XOAUTH2 encoded string with the email address of the shared mailbox.

IMAP プロトコルの ExchangeIMAP Protocol Exchange

IMAP サーバー接続を認証するには、クライアントは次の形式のコマンドで応答する必要があり AUTHENTICATE ます。To authenticate a IMAP server connection, the client will have to respond with an AUTHENTICATE command in the following format:

AUTHENTICATE XOAUTH2 <base64 string in XOAUTH2 format>

認証に成功した結果として得られるクライアントとサーバー間のメッセージ交換の例を次に示します。Sample client-server message exchange that results in an authentication success:

[connection begins]
C: C01 CAPABILITY
S: * CAPABILITY … AUTH=XOAUTH2
S: C01 OK Completed
C: A01 AUTHENTICATE XOAUTH2 dXNlcj1zb21ldXNlckBleGFtcGxlLmNvbQFhdXRoPUJlYXJlciB5YTI5LnZGOWRmdDRxbVRjMk52YjNSbGNrQmhkSFJoZG1semRHRXVZMjl0Q2cBAQ==
S: A01 OK AUTHENTICATE completed.

認証エラーが発生するクライアントサーバーのメッセージ交換の例を次に示します。Sample client-server message exchange that results in an authentication failure:

[connection begins]
S: * CAPABILITY … AUTH=XOAUTH2
S: C01 OK Completed
C: A01 AUTHENTICATE XOAUTH2 dXNlcj1zb21ldXNlckBleGFtcGxlLmNvbQFhdXRoPUJlYXJlciB5YTI5LnZGOWRmdDRxbVRjMk52YjNSbGNrQmhkSFJoZG1semRHRXVZMjl0Q2cBAQ==
S: A01 NO AUTHENTICATE failed.

POP プロトコルの交換POP Protocol Exchange

POP サーバー接続を認証するには、クライアントは AUTH コマンドを次の形式で2行に分割して応答する必要があります。To authenticate a POP server connection, the client will have to respond with an AUTH command split into two lines in the following format:

AUTH XOAUTH2 
<base64 string in XOAUTH2 format>   

認証に成功した結果として得られるクライアントとサーバー間のメッセージ交換の例を次に示します。Sample client-server message exchange that results in an authentication success:

[connection begins] 
C: AUTH XOAUTH2     
S: +    
C: dXNlcj1zb21ldXNlckBleGFtcGxlLmNvbQFhdXRoPUJlYX   
JlciB5YTI5LnZGOWRmdDRxbVRjMk52YjNSbGNrQmhkSFJoZG1semRHRXVZMjl0  
Q2cBAQ==    
S: +OK User successfully authenticated. 
[connection continues...]   

認証エラーが発生するクライアントサーバーのメッセージ交換の例を次に示します。Sample client-server message exchange that results in an authentication failure:

[connection begins] 
C: AUTH XOAUTH2     
S: +    
C: dXNlcj1zb21ldXNlckBleGFtcGxlLmNvbQFhdXRoPUJlY    
XJlciB5YTI5LnZGOWRmdDRxbVRjMk52YjNSbGNrQmhkSFJoZG1semRHRXVZMj   
l0Q2cBAQ=   
S: -ERR Authentication failure: unknown user name or bad password.  

SMTP プロトコルの ExchangeSMTP Protocol Exchange

SMTP サーバー接続を認証するには、クライアントは次の形式のコマンドで応答する必要があり AUTH ます。To authenticate a SMTP server connection, the client will have to respond with an AUTH command in the following format:

AUTH XOAUTH2 <base64 string in XOAUTH2 format>

認証に成功した結果として得られるクライアントとサーバー間のメッセージ交換の例を次に示します。Sample client-server message exchange that results in an authentication success:

[connection begins]
C: auth xoauth2
S: 334
C: dXNlcj1zb21ldXNlckBleGFtcGxlLmNvbQFhdXRoPUJlY
XJlciB5YTI5LnZGOWRmdDRxbVRjMk52YjNSbGNrQmhkSFJoZG1semRHRXVZMj
l0Q2cBAQ==
S: 235 2.7.0 Authentication successful
[connection continues...]

認証エラーが発生するクライアントサーバーのメッセージ交換の例を次に示します。Sample client-server message exchange that results in an authentication failure:

[connection begins]
C: auth xoauth2
S: 334
C: dXNlcj1zb21ldXNlckBleGFtcGxlLmNvbQFhdXRoPUJlY
XJlciB5YTI5LnZGOWRmdDRxbVRjMk52YjNSbGNrQmhkSFJoZG1semRHRXVZMj
l0Q2cBAQ==
S: 535 5.7.3 Authentication unsuccessful [SN2PR00CA0018.namprd00.prod.outlook.com]

関連項目See also