Prise en charge d’OAuth2 pour le service de messagerie oauth2-support-for-the-mail-service

AEM as a Cloud Service offre la prise en charge d’OAuth2 pour son service de messagerie intégré, afin de permettre aux entreprises de se conformer aux exigences en matière de messagerie sécurisée.

Vous pouvez configurer OAuth pour plusieurs fournisseurs de messagerie. Vous trouverez ci-dessous des instructions détaillées pour configurer le service de messagerie d’AEM afin de l’authentifier via OAuth2 avec Microsoft® Office 365 Outlook. D’autres fournisseurs peuvent être configurés de la même manière.

AEM prend en charge deux options de transport basées sur OAuth2 pour Microsoft® 365 :

  • SMTP + OAuth2 - Chemin d’accès standard utilisant SMTP avec authentification OAuth2.
  • API Microsoft Graph - Autre chemin d’accès qui envoie des e-mails via Microsoft Graph lorsque votre organisation n’autorise pas l’envoi basé sur SMTP (par exemple, lorsque l’authentification SMTP est désactivée à l’échelle du client dans Microsoft® 365), ce qui empêche l’utilisation de SMTP et OAuth2.

Pour plus d’informations sur le service de messagerie d’AEM as a Cloud Service, voir Envoi d’e-mail.

Microsoft® Outlook microsoft-outlook

  1. Accédez à https://portal.azure.com/ et connectez-vous.

  2. Recherchez Azure Active Directory dans la barre de recherche et cliquez sur le résultat. Vous pouvez également accéder directement à https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/Overview.

  3. Cliquez sur Enregistrement de l’application > Nouvel enregistrement.

    Démarrage du processus d’enregistrement de l’application

  4. Renseignez les informations selon vos besoins puis cliquez sur Enregistrement.

  5. Accédez à l’application nouvellement créée, puis sélectionnez Autorisations d’API.

  6. Sélectionnez les autorisations ci-dessous pour votre application, puis cliquez sur Ajouter une autorisation :

    note note
    NOTE
    La configuration des autorisations peut évoluer au fil du temps. Travaillez avec Microsoft® si elles ne fonctionnent pas comme prévu.
    • https://outlook.office.com/SMTP.Send
    • openid
    • offline_access
    • email
    • profile
  7. Accédez à Authentification > Ajouter une plateforme > Web, et dans la section URL de redirection, ajoutez les URL ci-dessous, une avec et une sans barre oblique :

    • http://localhost/
    • http://localhost
  8. Appuyez sur Configurer après avoir ajouté chaque URL et configurez vos paramètres en fonction de vos besoins.

  9. Ensuite, accédez à Certificats et secrets, cliquez sur Nouveau secret client et suivez les étapes sur l’écran pour créer un secret. Veillez à prendre note de ce secret pour une utilisation ultérieure.

  10. Appuyez sur Aperçu dans le volet de gauche et copiez les valeurs pour ID d’application (client) et ID de répertoire (locataire) pour une utilisation ultérieure.

Pour effectuer une récapitulation, utilisez les informations suivantes pour configurer OAuth2 pour le service de messagerie du côté AEM :

  • L’URL d’authentification, qui est créée avec l’identifiant du locataire. Elle se présente comme suit : https://login.microsoftonline.com/<tenantID>/oauth2/v2.0/authorize
  • L’URL du jeton, qui est construite avec l’ID du locataire. Elle se présente comme suit : https://login.microsoftonline.com/<tenantID>/oauth2/v2.0/token
  • L’URL d’actualisation, qui est créée avec l’ID du locataire. Elle se présente comme suit : https://login.microsoftonline.com/<tenantID>/oauth2/v2.0/token
  • L’ID client
  • Le secret client

Génération du jeton d’actualisation generating-the-refresh-token

Ensuite, générez le jeton d’actualisation qui fait partie de la configuration OSGi lors d’une étape suivante en procédant comme suit :

  1. Ouvrez l’URL suivante dans le navigateur après avoir remplacé clientID et tenantID par les valeurs propres à votre compte :

    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`
    
  2. Sur demande, accordez l’autorisation.

  3. L’URL redirige vers un nouvel emplacement, créé au format suivant :

    code language-none
    http://localhost/?code=<code>&state=12345&session_state=4f984c6b-cc1f-47b9-81b2-66522ea83f81#`
    
  4. Copiez la valeur de <code> dans l’exemple ci-dessus.

  5. Utilisez la commande cURL suivante pour obtenir le refreshToken. Remplacez tenantID, clientID et clientSecret par les valeurs de votre compte et par la valeur de <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 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>'
    
  6. Prenez note des éléments refreshToken et accessToken.

Validation des jetons validating-the-tokens

Avant de poursuivre la configuration d’OAuth côté AEM, veillez à valider les éléments accessToken et refreshToken avec la procédure suivante :

  1. Générez le jeton accessToken à l'aide du refreshToken produit lors de la procédure précédente en utilisant la curl suivante, en remplaçant les valeurs de <client_id>,<client_secret> et <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 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>'
    
  2. Envoyez un e-mail à l’aide du jeton accessToken, afin de vérifier s’il fonctionne correctement.

NOTE
Vous pouvez obtenir la collection d’API Postman à partir de cet emplacement.
Voir la documentation de MSFT OAuth pour plus détails.

Intégration à AEM as a Cloud Service integration-with-aem-as-a-cloud-service

  1. Créez un fichier de propriétés OSGI appelé com.day.cq.mailer.oauth.impl.OAuthConfigurationProviderImpl.cfg.json sous /apps/<my-project>/osgiconfig/config avec la syntaxe suivante :

    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]"
    }
    
  2. Renseignez les champs authUrl, tokenUrl et refreshURL en les construisant comme décrit dans la section précédente.

  3. Ajoutez les portées suivantes à la configuration :

    note note
    NOTE
    Les portées peuvent évoluer au fil du temps. Travaillez avec Microsoft® si elles ne fonctionnent pas comme prévu.
    • https://outlook.office.com/SMTP.Send
    • openid
    • offline_access
    • email
    • profile
  4. Création d’un fichier de propriétés OSGI called com.day.cq.mailer.DefaultMailService.cfg.json
    sous /apps/<my-project>/osgiconfig/config avec la syntaxe ci-dessous. Les valeurs smtp.host et smtp.port correspondent à une configuration réseau avancée, comme décrit dans le tutoriel sur le service de messagerie.

    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
    }
    
  5. Pour Outlook, la valeur de configuration smtp.host est smtp.office365.com.

  6. Au moment de l’exécution, transmettez les secrets refreshToken values et clientSecret à l’aide de l’API des variables Cloud Manager ou en utilisant Cloud Manager pour ajouter des variables. Les valeurs des variables SECRET_SMTP_OAUTH_REFRESH_TOKEN et SECRET_SMTP_OAUTH_CLIENT_SECRET doivent être définies.

Si vous utilisez SMTP et OAuth2 et que l’e-mail ne fonctionne toujours pas, voir Dépannage.

API Microsoft Graph pour Microsoft® Outlook microsoft-graph-api

Suivez les mêmes étapes d’enregistrement de l’application Azure que celles décrites dans Microsoft Outlook, avec la différence suivante à l’étape 6 (Autorisations d’API). Utilisez l’autorisation déléguée Microsoft Graph Mail.Send au lieu de l’étendue SMTP Outlook :

NOTE
La configuration des autorisations peut évoluer au fil du temps. Travaillez avec Microsoft® si elles ne fonctionnent pas comme prévu.
  • https://graph.microsoft.com/Mail.Send
  • openid
  • offline_access
  • email
  • profile

Générer le jeton d’actualisation graph-generating-the-refresh-token

Suivez les mêmes étapes de génération de jeton que pour SMTP + OAuth2, en utilisant la portée du graphique Microsoft dans l’URL d’autorisation et la requête cURL.

URL d’autorisation (remplacez clientID et tenantID par vos valeurs) :

https://login.microsoftonline.com/<tenantID>/oauth2/v2.0/authorize?client_id=<clientId>&response_type=code&redirect_uri=http://localhost&response_mode=query&scope=https://graph.microsoft.com/Mail.Send%20email%20openid%20profile%20offline_access&state=12345

Dans la requête de jeton cURL, remplacez la portée par :

--data-urlencode 'scope=https://graph.microsoft.com/Mail.Send email openid profile offline_access'

Intégration à AEM as a Cloud Service graph-integration-with-aem-as-a-cloud-service

  1. Créez un fichier de propriétés OSGI appelé com.day.cq.mailer.oauth.impl.OAuthConfigurationProviderImpl.cfg.json sous /apps/<my-project>/osgiconfig/config avec les portées de graphique Microsoft :

    code language-none
    {
        "authUrl": "https://login.microsoftonline.com/<tenantID>/oauth2/v2.0/authorize",
        "tokenUrl": "https://login.microsoftonline.com/<tenantID>/oauth2/v2.0/token",
        "clientId": "<clientID>",
        "clientSecret": "$[secret:SECRET_SMTP_OAUTH_CLIENT_SECRET]",
        "scopes": [
           "https://graph.microsoft.com/Mail.Send",
           "openid",
           "offline_access",
           "email",
           "profile"
        ],
        "authCodeRedirectUrl": "http://localhost",
        "refreshUrl": "https://login.microsoftonline.com/<tenantID>/oauth2/v2.0/token",
        "refreshToken": "$[secret:SECRET_SMTP_OAUTH_REFRESH_TOKEN]"
    }
    
  2. Créez un fichier de propriétés OSGI com.day.cq.mailer.DefaultMailService.cfg.json sous /apps/<my-project>/osgiconfig/config avec oauth.flow et graph.flow définis sur true :

    code language-none
    {
     "smtp.host": "smtp.office365.com",
     "smtp.user": "<mailbox account used as the sender>",
     "smtp.password": "value not used",
     "smtp.port": 587,
     "from.address": "<from address used for sending>",
     "smtp.ssl": false,
     "smtp.starttls": false,
     "smtp.requiretls": false,
     "debug.email": false,
     "oauth.flow": true,
     "graph.flow": true
    }
    
  3. Au moment de l’exécution, transmettez les secrets refreshToken et clientSecret à l’aide de l’API des variables Cloud Manager ou en utilisant Cloud Manager pour ajouter des variables. Les valeurs des variables SECRET_SMTP_OAUTH_REFRESH_TOKEN et SECRET_SMTP_OAUTH_CLIENT_SECRET doivent être définies.

Résolution des problèmes troubleshooting

Si le service de messagerie ne fonctionne pas correctement, régénérez le refreshToken. Utilisez Génération du jeton d’actualisation lorsque vous utilisez SMTP et OAuth2, ou Génération du jeton d’actualisation lorsque vous utilisez un graphique Microsoft. Transmettez la nouvelle valeur via l’API Cloud Manager ; le déploiement peut prendre quelques minutes.

recommendation-more-help
fbcff2a9-b6fe-4574-b04a-21e75df764ab