Supporto OAuth2 per il servizio di posta oauth2-support-for-the-mail-service

AEM as a Cloud Service offre il supporto OAuth2 per il servizio di posta integrato, al fine di consentire alle organizzazioni di rispettare i requisiti e-mail sicuri.

Puoi configurare OAuth per più provider di posta elettronica. Di seguito sono riportate le istruzioni dettagliate per configurare il servizio di posta AEM per l’autenticazione tramite OAuth2 con Microsoft Office 365 Outlook. Altri fornitori possono essere configurati in modo simile.

AEM supporta due opzioni di trasporto basate su OAuth2 per Microsoft® 365:

  • SMTP + OAuth2 - Percorso standard che utilizza SMTP con autenticazione OAuth2.
  • API di Microsoft Graph - Percorso alternativo che invia messaggi tramite Microsoft Graph quando l'organizzazione non consente l'invio basato su SMTP (ad esempio, quando SMTP AUTH è disabilitato a livello di tenant in Microsoft® 365), che impedisce l'utilizzo di SMTP e OAuth2.

Per ulteriori informazioni sul servizio di posta AEM as a Cloud Service, consulta Invio di e-mail.

Microsoft® Outlook microsoft-outlook

  1. Vai a https://portal.azure.com/ e accedi.

  2. Cerca Azure Active Directory nella barra di ricerca e fai clic sul risultato. In alternativa, è possibile passare direttamente a https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/Overview

  3. Fai clic su Registrazione app > Nuova registrazione.

    Avvia il processo di registrazione dell’app

  4. Compila le informazioni in base alle tue esigenze, quindi fai clic su Registra.

  5. Passa all’app creata e seleziona Autorizzazioni API.

  6. Seleziona le seguenti autorizzazioni per la tua app, quindi fai clic su Aggiungi autorizzazione:

    note note
    NOTE
    La configurazione delle autorizzazioni può evolvere nel tempo. Se non funzionano come previsto, contatta Microsoft®.
    • https://outlook.office.com/SMTP.Send
    • openid
    • offline_access
    • email
    • profile
  7. Passa a Autenticazione > Aggiungi una piattaforma > Web e nella sezione URL di reindirizzamento aggiungi i seguenti URL - uno con e uno senza una barra:

    • http://localhost/
    • http://localhost
  8. Premi Configura dopo aver aggiunto ogni URL e configurato le impostazioni in base alle tue esigenze.

  9. Quindi, passa a Certificati e segreti, fai clic su Nuovo segreto client e segui i passaggi sullo schermo per creare un segreto. Assicurati di prendere nota di questo segreto per utilizzarlo in seguito.

  10. Premi Panoramica nel riquadro a sinistra e copia i valori per ID applicazione (client) e ID directory (tenant) per utilizzarlo in seguito.

Per ricapitolare, utilizza le seguenti informazioni per configurare OAuth2 per il servizio di posta sul lato AEM:

  • L’URL di autenticazione, che verrà costruito con l’ID tenant. Ha il seguente modulo: https://login.microsoftonline.com/<tenantID>/oauth2/v2.0/authorize
  • L’URL del token, che verrà costruito con l’ID tenant. Ha il seguente modulo: https://login.microsoftonline.com/<tenantID>/oauth2/v2.0/token
  • L’URL di aggiornamento, che verrà costruito con l’ID tenant. Ha il seguente modulo: https://login.microsoftonline.com/<tenantID>/oauth2/v2.0/token
  • ID client
  • Segreto client

Generazione del token di aggiornamento generating-the-refresh-token

Quindi, genera il token di aggiornamento, che fa parte della configurazione OSGi in un passaggio successivo, effettuando le seguenti operazioni:

  1. Apri il seguente URL nel browser dopo la sostituzione di clientID e tenantID con i valori specifici del tuo account:

    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. Quando richiesto, concedi l’autorizzazione.

  3. L’URL verrà reindirizzato a una nuova posizione, in questo formato:

    code language-none
    http://localhost/?code=<code>&state=12345&session_state=4f984c6b-cc1f-47b9-81b2-66522ea83f81#`
    
  4. Copia il valore di <code> nell’esempio precedente.

  5. Usa il seguente comando cURL per ottenere il refreshToken. Sostituisci tenantID, clientID e clientSecret con i valori per il tuo account e il valore per <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. Prendi nota di refreshToken e accessToken.

Convalida dei token validating-the-tokens

Prima di procedere alla configurazione di OAuth sul lato AEM, assicurati di convalidare sia accessToken che refreshToken con la procedura seguente:

  1. Genera l’accessToken utilizzando il refreshToken creato nella procedura precedente utilizzando il seguente cURL, sostituendo i valori per <client_id>,<client_secret>, e <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. Invia una e-mail utilizzando accessToken, in modo da poter vedere se funziona correttamente.

NOTE
Puoi ottenere la raccolta API Postman da questa posizione.
Per ulteriori dettagli, consulta la documentazione di MSFT OAuth.

Integrazione con AEM as a Cloud Service integration-with-aem-as-a-cloud-service

  1. Crea un file di proprietà OSGI denominato com.day.cq.mailer.oauth.impl.OAuthConfigurationProviderImpl.cfg.json sotto /apps/<my-project>/osgiconfig/config con la seguente sintassi:

    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. Compila il authUrl, tokenUrl, e refreshURL costruendoli come descritto nella sezione precedente.

  3. Aggiungi i seguenti ambiti alla configurazione:

    note note
    NOTE
    Gli ambiti possono evolvere nel tempo. Se non funzionano come previsto, contatta Microsoft®.
    • https://outlook.office.com/SMTP.Send
    • openid
    • offline_access
    • email
    • profile
  4. Creare un file di proprietà OSGI called com.day.cq.mailer.DefaultMailService.cfg.json
    in /apps/<my-project>/osgiconfig/config con la sintassi seguente. I valori smtp.host e smtp.port riflettono la configurazione di rete avanzata, come descritto nel Tutorial sul servizio e-mail.

    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. Per Outlook, il smtp.host valore di configurazione è smtp.office365.com

  6. In fase di runtime, passa i segreti refreshToken values e clientSecret che utilizzano l’API delle variabili di Cloud Manager oppure utilizza Cloud Manager per aggiungere variabili. I valori delle variabili SECRET_SMTP_OAUTH_REFRESH_TOKEN e SECRET_SMTP_OAUTH_CLIENT_SECRET devono essere definiti.

Se si utilizzano SMTP e OAuth2 e la posta elettronica non funziona, vedere Risoluzione dei problemi.

API di Microsoft Graph per Microsoft® Outlook microsoft-graph-api

Segui gli stessi passaggi per la registrazione all'app Azure descritti in Microsoft Outlook, con la seguente differenza nel passaggio 6 (Autorizzazioni API). Utilizzare l'autorizzazione delegata di Microsoft Graph Mail.Send invece dell'ambito SMTP di Outlook:

NOTE
La configurazione delle autorizzazioni può evolvere nel tempo. Se non funzionano come previsto, contatta Microsoft®.
  • https://graph.microsoft.com/Mail.Send
  • openid
  • offline_access
  • email
  • profile

Generazione del token di aggiornamento graph-generating-the-refresh-token

Segui gli stessi passaggi di generazione del token previsti per SMTP + OAuth2, utilizzando l’ambito di Microsoft Graph nell’URL di autorizzazione e nella richiesta cURL.

URL autorizzazione (sostituisci clientID e tenantID con i tuoi valori):

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

Nella richiesta del token cURL, sostituisci l’ambito con:

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

Integrazione con AEM as a Cloud Service graph-integration-with-aem-as-a-cloud-service

  1. Creare un file di proprietà OSGI denominato com.day.cq.mailer.oauth.impl.OAuthConfigurationProviderImpl.cfg.json in /apps/<my-project>/osgiconfig/config con gli ambiti di Microsoft Graph:

    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. Creare un file di proprietà OSGI com.day.cq.mailer.DefaultMailService.cfg.json in /apps/<my-project>/osgiconfig/config con oauth.flow e graph.flow impostati su 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. In fase di runtime, passa i segreti refreshToken e clientSecret che utilizzano l’API delle variabili di Cloud Manager oppure utilizza Cloud Manager per aggiungere variabili. I valori delle variabili SECRET_SMTP_OAUTH_REFRESH_TOKEN e SECRET_SMTP_OAUTH_CLIENT_SECRET devono essere definiti.

Risoluzione di problemi troubleshooting

Se il servizio di posta non funziona correttamente, rigenerare refreshToken. Utilizza Generazione del token di aggiornamento quando utilizzi SMTP e OAuth2 oppure Generazione del token di aggiornamento quando utilizzi Microsoft Graph. Passa il nuovo valore tramite API Cloud Manager; l’implementazione può richiedere alcuni minuti.

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