Suporte OAuth2 para o serviço de email oauth2-support-for-the-mail-service
O AEM as a Cloud Service oferece suporte de OAuth2 no seu serviço de email integrado, permitindo que as organizações cumpram com os requisitos de segurança de email.
Você pode configurar o OAuth para vários provedores de email. Abaixo estão as instruções passo a passo para configurar o serviço de email do AEM para autenticar via OAuth2 com o Microsoft® Office 365 Outlook. Outros fornecedores podem ser configurados de maneira semelhante.
A AEM suporta duas opções de transporte baseadas em OAuth2 para o Microsoft® 365:
- SMTP + OAuth2 - Caminho padrão usando SMTP com autenticação OAuth2.
- API do Microsoft Graph - Caminho alternativo que envia emails pelo Microsoft Graph quando sua organização não permite o envio baseado em SMTP (por exemplo, quando SMTP AUTH está desabilitado em todo o locatário no Microsoft® 365), o que impede o uso de SMTP e OAuth2.
Para obter mais informações sobre o Serviço de email do AEM as a Cloud Service, consulte Envio de email.
Microsoft® Outlook microsoft-outlook
-
Acesse https://portal.azure.com/ e faça logon.
-
Digite Azure Active Directory na barra de pesquisa e clique no resultado. Como alternativa, você pode navegar diretamente para https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/Overview
-
Clique em Registro do aplicativo > Novo registro.
-
Preencha as informações de acordo com suas necessidades e clique em Registrar.
-
Vá para o aplicativo criado e selecione Permissões de API.
-
Selecione as permissões abaixo para seu aplicativo e clique em Adicionar permissão:
note note NOTE A configuração de permissões pode evoluir com o tempo. Trabalhe com a Microsoft® se eles não funcionarem como esperado. https://outlook.office.com/SMTP.Sendopenidoffline_accessemailprofile
-
Acesse Autenticação > Adicionar uma plataforma > Web e na seção URLs de redirecionamento, adicione os URLs abaixo, um com a barra e o outro sem:
http://localhost/http://localhost
-
Clique em Configurar depois de adicionar cada URL e defina as configurações de acordo com seus requisitos.
-
Em seguida, acesse Certificados e segredos, clique em Novo segredo de cliente e siga as etapas na tela para criar um segredo. Anote este segredo para uso posterior.
-
Clique em Visão geral no painel esquerdo e copie os valores de ID do aplicativo (cliente) e ID do diretório (locatário) para uso posterior.
Resumindo, você precisará das seguintes informações para configurar o OAuth2 para o serviço de email no lado do AEM:
- O URL de autenticação, que será gerado com a ID do locatário. Ele tem este formato:
https://login.microsoftonline.com/<tenantID>/oauth2/v2.0/authorize - O URL do token, que será gerado com a ID do locatário. Ele tem este formato:
https://login.microsoftonline.com/<tenantID>/oauth2/v2.0/token - O URL de atualização, que será gerado com a ID do locatário. Ele tem este formato:
https://login.microsoftonline.com/<tenantID>/oauth2/v2.0/token - A ID do cliente
- O segredo do cliente
Geração do token de atualização generating-the-refresh-token
Em seguida, gere o token de atualização, que faz parte da configuração OSGi em uma etapa subsequente, seguindo este método:
-
Abra a seguinte URL no navegador depois de substituir
clientIDetenantIDpelos valores específicos da sua conta: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` -
Quando solicitado, conceda a permissão.
-
O URL redireciona para um novo local, construído neste formato:
code language-none http://localhost/?code=<code>&state=12345&session_state=4f984c6b-cc1f-47b9-81b2-66522ea83f81#` -
Copie o valor de
<code>no exemplo acima. -
Use o seguinte comando cURL para obter o refreshToken. Substitua tenantID, clientID e clientSecret pelos valores da sua conta e o valor por
<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>' -
Anote o refreshToken e o accessToken.
Validação dos tokens validating-the-tokens
Antes de continuar a configurar o OAuth no lado do AEM, valide o accessToken e o refreshToken com o procedimento abaixo:
-
Gere o accessToken usando o refreshToken produzido no procedimento anterior por meio do seguinte cURL, substituindo os valores de
<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>' -
Envie um email usando o accessToken para ver se ele está funcionando corretamente.
Integração com o AEM as a Cloud Service integration-with-aem-as-a-cloud-service
-
Crie um arquivo de propriedade OSGI chamado
com.day.cq.mailer.oauth.impl.OAuthConfigurationProviderImpl.cfg.jsonem/apps/<my-project>/osgiconfig/configcom a seguinte sintaxe: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]" } -
Preencha o
authUrl,tokenUrlerefreshURL, gerando-os conforme descrito na seção anterior. -
Adicione os seguintes escopos à configuração:
note note NOTE Os escopos podem evoluir com o tempo. Trabalhe com a Microsoft® se eles não funcionarem como esperado. https://outlook.office.com/SMTP.Sendopenidoffline_accessemailprofile
-
Criar um arquivo de propriedade OSGI
called com.day.cq.mailer.DefaultMailService.cfg.json
em/apps/<my-project>/osgiconfig/configcom a sintaxe abaixo. Os valoressmtp.hostesmtp.portrefletem a configuração avançada de rede, conforme descrito na seção Tutorial do serviço de email.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 } -
Para o Outlook, o valor de configuração do
smtp.hostésmtp.office365.com -
No tempo de execução, forneça os segredos
refreshToken valueseclientSecretusando a API de variáveis do Cloud Manager ou o Cloud Manager para adicionar variáveis. Os valores das variáveisSECRET_SMTP_OAUTH_REFRESH_TOKENeSECRET_SMTP_OAUTH_CLIENT_SECRETdevem ser definidos.
Se você usa SMTP e OAuth2 e o email ainda não funcionar, consulte Solução de problemas.
API do Microsoft Graph para Microsoft® Outlook microsoft-graph-api
Siga as mesmas etapas de registro do aplicativo Azure descritas em Microsoft Outlook, com a seguinte diferença na etapa 6 (Permissões de API). Use a permissão delegada do Gráfico Microsoft Mail.Send em vez do escopo SMTP do Outlook:
https://graph.microsoft.com/Mail.Sendopenidoffline_accessemailprofile
Geração do token de atualização graph-generating-the-refresh-token
Siga as mesmas etapas de geração de token de SMTP + OAuth2, usando o escopo do Gráfico Microsoft na URL de autorização e na solicitação de cURL.
URL de autorização (substitua clientID e tenantID por seus 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
Na solicitação de token cURL, substitua o escopo por:
--data-urlencode 'scope=https://graph.microsoft.com/Mail.Send email openid profile offline_access'
Integração com o AEM as a Cloud Service graph-integration-with-aem-as-a-cloud-service
-
Crie um arquivo de propriedade OSGI chamado
com.day.cq.mailer.oauth.impl.OAuthConfigurationProviderImpl.cfg.jsonem/apps/<my-project>/osgiconfig/configcom os escopos do Gráfico 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]" } -
Crie um arquivo de propriedade OSGI
com.day.cq.mailer.DefaultMailService.cfg.jsonem/apps/<my-project>/osgiconfig/configcomoauth.flowegraph.flowdefinidos comotrue: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 } -
No tempo de execução, forneça os segredos
refreshTokeneclientSecretusando a API de variáveis do Cloud Manager ou o Cloud Manager para adicionar variáveis. Os valores das variáveisSECRET_SMTP_OAUTH_REFRESH_TOKENeSECRET_SMTP_OAUTH_CLIENT_SECRETdevem ser definidos.
Resolução de problemas troubleshooting
Se o serviço de email não estiver funcionando corretamente, gere novamente o refreshToken. Use Gerando o token de atualização ao usar SMTP e OAuth2 ou Gerando o token de atualização ao usar o gráfico do Microsoft. Passe o novo valor pela API do Cloud Manager; a implantação pode levar alguns minutos.