Neste documento estão detalhadas algumas configurações para a substituição da autenticação básica com o Microsoft Office 365.
Após o bloqueio da autenticação básica aos protocolos IMAP e POP por parte da Microsoft, é necessário configurar a autenticação OAUTH2, que não utiliza mais a senha da conta de e-mail para autenticação.
Para isso é necessário ter acesso administrador no Azure para executar os passos abaixo.
Configurações no Azure
Acessar o Azure AD
Criação do aplicativo
Será necessário copiar essas informações, pois serão utilizadas para cadastro no e-mail monitorado.
Adicionar permissão de leitura de e-mail
Conceder consentimento do administrador para o Aplicativo
Após consentimento do Administrador.
Cadastrar chave do cliente
Período e nome da chave
Copie o esse Valor, pois será utilizado para cadastro no portal e depois não ficará mais disponível para copiar.
Comandos via CloudShell (Powershell)
Agora com os passos acima, é necessário executar os seguintes comandos no CloudShell como Administrador, para vincular o Aplicativo aos usuários e adicionar a permissão de leitura na caixa de e-mail.
Install-Module -Name AzureAD
Install-Module -Name AzureADPreview
Install-Module -Name ExchangeOnlineManagement
Import-Module AzureAD
Import-Module AzureADPreview
Import-module ExchangeOnlineManagement
Connect-AzureAD
Connect-ExchangeOnline
$MyApp = Get-AzADServicePrincipal -SearchString “conexaonfe”
New-ServicePrincipal -AppId $MyApp.AppId -ServiceId $MyApp.Id -DisplayName "conexaonfe"
Add-MailboxPermission -Identity "<<<<EmailParaLiberar>>>>" -User $MyApp.Id -AccessRights FullAccess
ps. Não esquecer de alterar a conta de e-mail que será vinculada ao Aplicativo.
ps2. Caso seja necessário liberar mais de uma caixa de e-mail, repita o comando Add-MailboxPermission para todos os e-mails que você deseja liberar.
ps3. O comando Add-MailboxPermission só fica disponível após o Connect-ExchangeOnline.
ps4. Se você informou um nome de aplicativo diferente de "conexaonfe", altere os comandos nas linhas $MyApp e New-ServicePrincipal.
Configurações no Portal
Administrar >> E-mails Monitorados
Cadastrar o E-mail monitorado com base nos passos anteriores.
O e-mail(s) deve(m) ser o(s) mesmo(s) cadastrado(s) no comando Add-MailboxPermission.
Ao testar a conectividade é validado somente se as informações acima estão corretas e com elas é possível se autenticar na API do Azure.
Mas posteriormente na leitura da caixa de e-mail pode apresentar acesso negado, caso o comando Add-MailboxPermission não tiver sido executado corretamente ou a liberação for aplicada para uma conta de e-mail diferente da cadastrada no E-mail Monitorado.
Possíveis problemas de acesso negado na leitura do e-mail
- Algum comando no powershell não teve efeito ou apresentou erro;
- Em casos de empresas com mais de um Tenant, pode ter sido aplicadas as permissões em um Tenant diferente da produção;
- Em Permissões e APIs no Azure não foi adicionado ou liberado consentimento pelo Administrador na permissão de e-mail ImapAccessAsApp;
- Liberada permissão Add-MailboxPermission para uma conta de e-mail diferente do que foi parametrizado em Emails Monitorados.
Comandos para auxiliar na identificação do problema de autenticação
Preparando o Powershell para execução dos comandos
Install-Module -Name AzureAD
Install-Module -Name AzureADPreview
Install-Module -Name ExchangeOnlineManagement
Import-Module AzureAD
Import-Module AzureADPreview
Import-module ExchangeOnlineManagement
Connect-AzureAD
Connect-ExchangeOnline
Sem os passos acima, alguns comandos podem não funcionar.
Verifique se encontra aplicativo cadastrado no Azure
Se atentar em informar o mesmo nome usado no cadastro.
Get-AzADServicePrincipal -SearchString “conexaonfe”
Exemplo da resposta do comando:
DisplayName Id AppId
----------- -- -----
ConexaoNFe c6327d28-8d1e-4709-83b8-xxxxxxxxxxxx 97aea66f-de78-44cd-b437-xxxxxxxxxxx
Se não apresentar resultados, não está encontrando o Registro de Aplicativo criado.
Verifique o nome cadastrado e se está no Tenant correto.
Sem o Aplicativo, todos os passos posteriores não funcionarão.
Verifique se o ServicePrincipal do Exchange Online foi criado
Comando que retorna todos os Service Principal.
Get-ServicePrincipal -Identity “conexaonfe”
Exemplo da resposta do comando:
DisplayName ObjectId AppId
----------- -------- -----
conexaonfe c6327d28-8d1e-4709-83b8-xxxxxxxxxxxx 97aea66f-de78-44cd-b437-2xxxxxxxx
Vai listar conexaonfe caso o comando New-ServicePrincipal foi executado com sucesso.
Verifique a permissão MailboxPermission
Get-MailboxPermission -Identity "<<<<Email cadastrado para monitoramento>>>>"
Exemplo da resposta do comando:
Identity User AccessRights IsInherited Deny
-------- ---- ------------ ----------- ----
FábioGoll NT AUTHORITY\SELF {FullAccess, ReadPermission} False False
Caso não encontre, execute novamente o passo a passo dos comando PowerShell.