メールサービスの OAuth2 サポート oauth2-support-for-the-mail-service
AEM as a Cloud Service は、組織が安全なメール要件に準拠できるように、OAuth2 の統合メールサービスをサポートしています。
Oauth は複数のメールプロバイダーに対して設定できます。Microsoft® Office 365 Outlook で OAuth2 による認証を行うように AEM メールサービスを設定する手順を以下に示します。他のベンダーも同様の方法で設定できます。
AEM as a Cloud Service のメールサービスの詳細については、メールの送信を参照してください。
Microsoft® Outlook microsoft-outlook
-
https://portal.azure.com/に移動し、ログインします。
-
検索バーで Azure Active Directory を検索し、結果をクリックします。または、https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/Overview を直接参照することもできます。
-
アプリの登録/新しい登録 をクリックします。
-
必要に応じて情報を入力し、「登録」をクリックします。
-
作成されたアプリに移動し、「API 権限」を選択します。
-
権限を追加/グラフ権限/委任権限 に移動します。
-
アプリに対して以下の権限を選択し、「権限を追加」をクリックします。
note note NOTE 権限の設定は、時間の経過と共に進化することがあります。これらが想定どおりに動作しない場合は、Microsoft® にお問い合わせください。 https://outlook.office.com/SMTP.Send
openid
offline_access
email
profile
-
認証/プラットフォームを追加/Web に移動し、リダイレクト URL セクションで、次の URL(スラッシュありとスラッシュなし)を追加します
http://localhost/
http://localhost
-
各 URL を追加した後で「設定」を押し、必要に応じて設定を指定します.
-
次に、証明書とシークレット に移動し、「新しいクライアントシークレット」をクリックし、画面上の手順に従ってシークレットを作成します。このシークレットは後で使用するため、必ずメモしてください.
-
左側のウィンドウで「概要」を押し、後で使用するために、「アプリケーション(クライアント)ID」および「ディレクトリ(テナント)ID」の値をコピーします。
まとめると、次の情報を使用して、AEM 側のメールサービスの OAuth2 を設定する必要があります。
- 認証 URL はテナント ID を使用して構築されます。
https://login.microsoftonline.com/<tenantID>/oauth2/v2.0/authorize
の形式で記述します。 - トークン URL はテナント ID を使用して構築されます。
https://login.microsoftonline.com/<tenantID>/oauth2/v2.0/token
の形式で記述します。 - 更新 URL はテナント ID を使用して構築されます。
https://login.microsoftonline.com/<tenantID>/oauth2/v2.0/token
の形式で記述します。 - クライアント ID
- クライアント秘密鍵
更新トークンの生成 generating-the-refresh-token
次に、次の手順に従って OSGi 設定の一部である更新トークンを生成します。
-
clientID
とtenantID
を自分のアカウントに固有の値に置き換えてから、ブラウザーで次の URL を開きます。code language-none https://login.microsoftonline.com/%3ctenantID%3e/oauth2/v2.0/authorize?client_id=%3cclientId%3e&response_type=code&redirect_uri=http://localhost&response_mode=query&scope=https://outlook.office.com/SMTP.Send%20email%20openid%20profile%20offline_access&state=12345`
-
指示に従って、権限を許可します。
-
URL は、次の形式で構成された新しい場所にリダイレクトします。
code language-none http://localhost/?code=<code>&state=12345&session_state=4f984c6b-cc1f-47b9-81b2-66522ea83f81#`
-
上記の例の
<code>
の値をコピーします。 -
次の cURL コマンドを使用して、 refreshToken を取得します。tenantID、clientID および clientSecret は、アカウントの値とおよび
<code>
の値と置き換えます。code language-none curl --location --request POST 'https://login.microsoftonline.com/<tenantId>/oauth2/v2.0/token' \ --header 'Content-Type: application/x-www-form-urlencoded' \ --header 'Cookie: buid=0.ARgAep0nU49DzUGmoP2wnvyIkcQjsx26HEpOnvHS0akqXQgYAAA.AQABAAEAAAD--DLA3VO7QrddgJg7Wevry9XPJSKbGVlPt5NWYxLtTl3K1W0LwHXelrffApUo_K02kFrkvmGm94rfBT94t25Zq4bCd5IM3yFOjWb3V22yDM7-rl112sLzbBQBRCL3QAAgAA; esctx=AQABAAAAAAD--DLA3VO7QrddgJg7Wevr4a8wBjYcNbBXRievdTOd15caaeAsQdXeBAQA3tjVQaxmrOXFGkKaE7HBzsJrzA-ci4RRpor-opoo5gpGLh3pj_iMZuqegQPEb1V5sUVQV8_DUEbBv5YFV2eczS5EAhLBAwAd1mHx6jYOL8LwZNDFvd2-MhVXwPd6iKPigSuBxMogAA; x-ms-gateway-slice=estsfd; stsservicecookie=estsfd; fpc=Auv6lTuyAP1FuOOCfj9w0U_5vR5dAQAAALDXP9gOAAAAwIpkkQEAAACT2T_YDgAAAA' \ --data-urlencode 'client_id=<clientID>' \ --data-urlencode 'scope=https://outlook.office.com/SMTP.Send https://graph.microsoft.com/Mail.Read https://graph.microsoft.com/Mail.Send https://graph.microsoft.com/User.Read email openid profile offline_access' \ --data-urlencode 'redirect_uri=http://localhost' \ --data-urlencode 'grant_type=authorization_code' \ --data-urlencode 'client_secret=<clientSecret>' \ --data-urlencode 'code=<code>'
-
refreshToken と accessToken をメモしておきます。
トークンの検証 validating-the-tokens
AEM 側で Oauth を設定する前に、次の手順で accessToken と refreshToken の両方を検証してください。
-
次の cURL を使用して、前の手順で作成した更新トークンを使用し、アクセストークンを生成して、
<client_id>
、<client_secret>
および<refreshToken>
の値を置き換えます。code language-none curl --location --request POST 'https://login.microsoftonline.com/<tenetId>/oauth2/v2.0/token' \ --header 'Content-Type: application/x-www-form-urlencoded' \ --header 'Cookie: buid=0.ARgAep0nU49DzUGmoP2wnvyIkcQjsx26HEpOnvHS0akqXQgYAAA.AQABAAEAAAD--DLA3VO7QrddgJg7Wevry9XPJSKbGVlPt5NWYxLtTl3K1W0LwHXelrffApUo_K02kFrkvmGm94rfBT94t25Zq4bCd5IM3yFOjWb3V22yDM7-rl112sLzbBQBRCL3QAAgAA; esctx=AQABAAAAAAD--DLA3VO7QrddgJg7Wevr4a8wBjYcNbBXRievdTOd15caaeAsQdXeBAQA3tjVQaxmrOXFGkKaE7HBzsJrzA-ci4RRpor-opoo5gpGLh3pj_iMZuqegQPEb1V5sUVQV8_DUEbBv5YFV2eczS5EAhLBAwAd1mHx6jYOL8LwZNDFvd2-MhVXwPd6iKPigSuBxMogAA; x-ms-gateway-slice=estsfd; stsservicecookie=estsfd; fpc=Auv6lTuyAP1FuOOCfj9w0U_IezHLAQAAAPeNSdgOAAAA' \ --data-urlencode 'client_id=<client_id>' \ --data-urlencode 'scope=https://outlook.office.com/SMTP.Send https://graph.microsoft.com/Mail.Read https://graph.microsoft.com/Mail.Send https://graph.microsoft.com/User.Read email openid profile offline_access' \ --data-urlencode 'redirect_uri=http://localhost' \ --data-urlencode 'grant_type=refresh_token' \ --data-urlencode 'client_secret=<client_secret>' \ --data-urlencode 'refresh_token=<refreshToken>'
-
アクセストークンを使用してメールを送信し、正しく機能しているかどうかを確認できます。
AEM as a Cloud Service との統合 integration-with-aem-as-a-cloud-service
-
com.day.cq.mailer.oauth.impl.OAuthConfigurationProviderImpl.cfg.json
という名前の OSGI プロパティファイルを/apps/<my-project>/osgiconfig/config
の下に次の構文で作成します。code language-none { authUrl: "<Authorization Url>", tokenUrl: "<Token Url>", clientId: "<clientID>", clientSecret: "$[secret:SECRET_SMTP_OAUTH_CLIENT_SECRET]", scopes: [ "scope1", "scope2" ], authCodeRedirectUrl: "http://localhost", refreshUrl: "<Refresh token Url>", refreshToken: "$[secret:SECRET_SMTP_OAUTH_REFRESH_TOKEN]" }
-
前の節で説明したように、
authUrl
、tokenUrl
およびrefreshURL
を作成して入力します。 -
次のスコープを設定に追加します。
note note NOTE スコープは、時間の経過と共に進化することがあります。これらが想定どおりに動作しない場合は、Microsoft® にお問い合わせください。 https://outlook.office.com/SMTP.Send
openid
offline_access
email
profile
-
以下の構文を使用して、OSGI プロパティファイル
called com.day.cq.mailer.DefaultMailService.cfg.json
を/apps/<my-project>/osgiconfig/config
の下に作成します。smtp.host
およびsmtp.port
の値は、メールサービスのチュートリアルで説明するように、高度なネットワーク設定を反映します。code language-none { "smtp.host": "$[env:AEM_PROXY_HOST;default=proxy.tunnel]", "smtp.user": "<user account that logged into get the oauth tokens>", "smtp.password": "value not used", "smtp.port": 30465, "from.address": "<from address used for sending>", "smtp.ssl": false, "smtp.starttls": true, "smtp.requiretls": true, "debug.email": false, "oauth.flow": true }
-
Outlook の場合、
smtp.host
設定値はsmtp.office365.com
です -
実行時に、
refreshToken values
およびclientSecret
秘密鍵を渡すには、Cloud Manager 変数 API を使用するか、Cloud Manager を使用して変数を追加します。変数SECRET_SMTP_OAUTH_REFRESH_TOKEN
とSECRET_SMTP_OAUTH_CLIENT_SECRET
の値を定義する必要があります。
トラブルシューティング troubleshooting
メールサービスが正常に動作しない場合は、前述のように refreshToken
を再生成し、Cloud Manager API を介して新しい値を渡す必要があります。新しい値がデプロイされるまで数分かかります。