4D v18 R6 では、IMAP、SMTP、または POP3トランスポーターを介してメールにアクセスするために OAuth 2.0認証 を導入しました。4D v19 R3 では、4D は OAuth 2.0プロトコルを引き続き実装し、Microsoft 365 の API に接続するために Microsoft ID プラットフォームからプログラミングで簡単にトークンをリクエストする方法を提供します。
HDI: メール: Microsoft ID プラットフォームから Oauth2.0アクセストークンを取得
前提条件
Microsoft ID プラットフォームからトークンを取得する前に、まず、Azure ポータル にアプリケーションを登録します。これにより、アプリケーションと Microsoft ID プラットフォームの間に信頼関係が確立されます。この信頼関係は一方向のものであり、アプリケーションが Microsoft ID プラットフォームを信頼するのであって、その逆ではありません。
Microsoft のこのチュートリアル は、Azure ポータル にアプリケーションを登録する方法を理解するための素晴らしいリソースです。
登録によって、アプリケーションを Microsoft ID プラットフォームと統合し、トークンの取得に使用する以下のような情報を確立します:
- クライアントID: Microsoft ID プラットフォームが割り当てる一意の識別子。
- リダイレクト URI/URL: アプリケーションが Microsoft ID プラットフォームから応答を受け取る 1つまたは複数のエンドポイント。
- クライアントシークレット: アプリが Microsoft ID プラットフォームとの認証に使用するパスワードまたは公開鍵/秘密鍵のペア。(サービス用にアクセス権を取得する場合のみ必要です)。
アクセストークンを取得する
Microsoft ID プラットフォームが発行するアクセストークンには、Microsoft 365 の API である Microsoft Graph が呼び出し元を検証し、要求している操作を実行する適切な権限を持っていることを確認するために使用する情報が含まれています。
トークンを取得するには、登録時に提供されたすべての情報を New OAuth2 provider コマンドに渡して実行します:
$param:=New object()
$param.name:="Microsoft"
$param.permission:="signedIn"
$param.clientId:="7008ebf5-xxxx-xxxx"
$param.redirectURI:="http://127.0.0.1:50993/"
$param.scope:="https://outlook.office.com/IMAP.AccessAsUser.All"
// 新しい OAuth2 オブジェクトを作成します
$oAuth2:=New OAuth2 provider($param)
// トークンを要求します
$token:=$oAuth2.getToken()
If ($token#Null)
// トークンを使い、IMAP でメールにアクセスします
$IMAPParameters:=New object
$IMAPParameters.authenticationMode:=IMAP authentication OAUTH2
// サーバーから取得したトークン
$IMAPParameters.accessTokenOAuth2:=$token.token.access_token
// トークンが発行された対象のユーザーのメールアドレス
$IMAPParameters.user:=$user
$IMAPParameters.host:="Outlook.office365.com"
$IMAPTransporter:=IMAP New transporter($IMAPParameters)
$status:=$IMAPTransporter.checkConnection()
If (Not($status.success))
ALERT("IMAPサーバーへのアクセスが拒否されました")
End if
End if
このコマンドは、新しい 4D NetKit コンポーネントの一部で、そのソースとドキュメントは github で公開されています。