Compatibilidad con OAuth2 para el servicio de correo oauth2-support-for-the-mail-service

AEM as a Cloud Service ofrece compatibilidad con OAuth2 para su servicio de correo integrado, con el fin de permitir que las organizaciones se adhieran a los requisitos de correo electrónico seguros.

Puede configurar OAuth para varios proveedores de correo electrónico. A continuación se proporcionan instrucciones paso a paso para configurar el servicio de correo de AEM para autenticarse mediante OAuth2 con Outlook de Microsoft® Office 365. Otros proveedores se pueden configurar de manera similar.

AEM admite dos opciones de transporte basadas en OAuth2 para Microsoft® 365:

  • SMTP + OAuth2: ruta estándar que utiliza SMTP con autenticación OAuth2.
  • API de Microsoft Graph: ruta alternativa que envía correo a través de Microsoft Graph cuando su organización no permite el envío basado en SMTP (por ejemplo, cuando SMTP AUTH está deshabilitado en todo el inquilino en Microsoft® 365), lo que impide el uso de SMTP y OAuth2.

Para obtener más información sobre el servicio de correo de AEM as a Cloud Service, consulte Envío de correos electrónicos.

Microsoft® Outlook microsoft-outlook

  1. Vaya a https://portal.azure.com/ e inicie sesión.

  2. Busque Azure Active Directory en la barra de búsqueda y haga clic en el resultado. También puede navegar directamente a https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/Overview

  3. Haga clic en Registro de aplicaciones > Nuevo registro.

    Iniciar proceso de registro de aplicación

  4. Rellene la información según sus necesidades y haga clic en Registro.

  5. Vaya a la aplicación creada y seleccione Permisos de API.

  6. Seleccione los siguientes permisos para su aplicación y haga clic en Añadir permiso:

    note note
    NOTE
    La configuración de los permisos puede evolucionar con el tiempo. Trabaje con Microsoft® si estos no funcionan de acuerdo con lo previsto.
    • https://outlook.office.com/SMTP.Send
    • openid
    • offline_access
    • email
    • profile
  7. Vaya a Autenticación > Añadir una plataforma > Web y en la sección Redirección de URL, añada las siguientes direcciones URL: una con barra diagonal y otra sin:

    • http://localhost/
    • http://localhost
  8. Pulse Configurar después de añadir cada URL y configurar los ajustes según sus necesidades.

  9. A continuación, vaya a Certificados y secretos, haga clic en Nuevo secreto de cliente y siga los pasos que aparecen en la pantalla para crear un secreto. Asegúrese de tomar nota de este secreto para utilizarlo posteriormente.

  10. Pulse Información general en el panel izquierdo y copie los valores de ID de aplicación (cliente) y ID de directorio (inquilino) para su posterior uso.

Para recapitular, utilice la siguiente información para configurar OAuth2 para el servicio de correo en el lado AEM:

  • La URL de autenticación, que se construye con el ID del inquilino. Tiene este formulario: https://login.microsoftonline.com/<tenantID>/oauth2/v2.0/authorize
  • La URL del token, que se construye con el ID del inquilino. Tiene este formulario: https://login.microsoftonline.com/<tenantID>/oauth2/v2.0/token
  • La URL de actualización, que se construye con el ID del inquilino. Tiene este formulario: https://login.microsoftonline.com/<tenantID>/oauth2/v2.0/token
  • El ID de cliente
  • El secreto del cliente

Generación del token de actualización generating-the-refresh-token

A continuación, genere el token de actualización, que forma parte de la configuración OSGi en un paso posterior, haciendo lo siguiente:

  1. Abra la siguiente URL en el explorador después de reemplazar clientID y tenantID con los valores específicos de su cuenta:

    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. Cuando se le pida, conceda el permiso.

  3. La dirección URL se redirecciona a una nueva ubicación, construida con este formato:

    code language-none
    http://localhost/?code=<code>&state=12345&session_state=4f984c6b-cc1f-47b9-81b2-66522ea83f81#`
    
  4. Copie el valor de <code> en el ejemplo anterior.

  5. Utilice el siguiente comando cURL para obtener el refreshToken. Reemplace tenantID, clientID y clientSecret con los valores de su cuenta y el valor 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. Tome nota de refreshToken y accessToken.

Validación de tokens validating-the-tokens

Antes de configurar OAuth en el lado de AEM, asegúrese de validar accessToken y refreshToken con el siguiente procedimiento:

  1. Genere el accessToken utilizando el refreshToken producido en el procedimiento anterior utilizando el siguiente curl, reemplazando los valores de <client_id>, <client_secret> y <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. Envíe un correo utilizando el accessToken para poder ver si funciona correctamente.

NOTE
Puede obtener la colección de la API Postman desde esta ubicación.
Consulte la documentación de MSFT OAuth ​para obtener más información.

Integración con AEM as a Cloud Service integration-with-aem-as-a-cloud-service

  1. Cree un archivo de propiedad OSGi llamado com.day.cq.mailer.oauth.impl.OAuthConfigurationProviderImpl.cfg.json en /apps/<my-project>/osgiconfig/config con la siguiente sintaxis:

    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. Complete authUrl, tokenUrl y refreshURL construyéndolos como se describe en la sección anterior.

  3. Añada los siguientes ámbitos a la configuración:

    note note
    NOTE
    Los ámbitos pueden evolucionar con el tiempo. Trabaje con Microsoft® si estos no funcionan de acuerdo con lo previsto.
    • https://outlook.office.com/SMTP.Send
    • openid
    • offline_access
    • email
    • profile
  4. Creación de un archivo de propiedad OSGI called com.day.cq.mailer.DefaultMailService.cfg.json
    en /apps/<my-project>/osgiconfig/config con la sintaxis siguiente. smtp.host y smtp.port reflejan la configuración avanzada de red, tal como se describe en la sección Tutorial del servicio de correo electrónico.

    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. Para Outlook, el valor de configuración de smtp.host es smtp.office365.com

  6. Durante el tiempo de ejecución, pase los secretos refreshToken values y clientSecret mediante la API de variables de Cloud Manager o utilizando Cloud Manager para añadir variables. Los valores de las variables SECRET_SMTP_OAUTH_REFRESH_TOKEN y SECRET_SMTP_OAUTH_CLIENT_SECRET deben definirse.

Si usa SMTP y OAuth2 y el correo electrónico sigue sin funcionar, consulte Solución de problemas.

API de gráficos de Microsoft para Microsoft® Outlook microsoft-graph-api

Siga los mismos pasos para registrar la aplicación de Azure que se describen en Microsoft Outlook, con la siguiente diferencia en el paso 6 (Permisos de API). Use el permiso delegado de Microsoft Graph Mail.Send en lugar del ámbito SMTP de Outlook:

NOTE
La configuración de los permisos puede evolucionar con el tiempo. Trabaje con Microsoft® si estos no funcionan de acuerdo con lo previsto.
  • https://graph.microsoft.com/Mail.Send
  • openid
  • offline_access
  • email
  • profile

Generación del token de actualización graph-generating-the-refresh-token

Siga los mismos pasos de generación de tokens que para SMTP + OAuth2, usando el ámbito Microsoft Graph en la URL de autorización y la solicitud cURL.

URL de autorización (reemplace clientID y tenantID por sus valores):

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

En la solicitud de token de cURL, reemplace el ámbito por:

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

Integración con AEM as a Cloud Service graph-integration-with-aem-as-a-cloud-service

  1. Cree un archivo de propiedad OSGI llamado com.day.cq.mailer.oauth.impl.OAuthConfigurationProviderImpl.cfg.json en /apps/<my-project>/osgiconfig/config con los ámbitos de 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. Cree un archivo de propiedad OSGI com.day.cq.mailer.DefaultMailService.cfg.json en /apps/<my-project>/osgiconfig/config con oauth.flow y graph.flow establecidos en 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. Durante el tiempo de ejecución, pase los secretos refreshToken y clientSecret mediante la API de variables de Cloud Manager o utilizando Cloud Manager para añadir variables. Los valores de las variables SECRET_SMTP_OAUTH_REFRESH_TOKEN y SECRET_SMTP_OAUTH_CLIENT_SECRET deben definirse.

Resolución de problemas troubleshooting

Si el servicio de correo no funciona correctamente, vuelva a generar refreshToken. Use Generando el token de actualización cuando use SMTP y OAuth2, o Generando el token de actualización cuando use Microsoft Graph. Pase el nuevo valor a través de la API de Cloud Manager; la implementación puede tardar unos minutos.

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