01. DADOS GERAIS

Produto:

Linha de Produto:

Transmissão de documentos eletrônicos

Segmento:

Módulo:

Função:

SPED_WSCFG01.PRX

tssprocspedcfgnfe.prw

tssInitializes.prw

SPED_FW02.PRX

País:Brasil
Ticket:Não Há.
Requisito/Story/Issue (informe o requisito relacionado) :DSERTSS1-30596


02. SITUAÇÃO/REQUISITO

Implementação da autenticação via Microsoft Graph, utilizando o fluxo OAuth 2.0 – Client Credentials, aplicada ao envio de e-mails automáticos (JOB/serviço) no TSS/Protheus.

03. SOLUÇÃO

Foi implementado no TSS, a possibilidade de enviar e-mail pelo Microsoft Graph utilizando OAuth 2.0.

Resumo simplificado de como funciona a autenticação:

    1. Sistema solicita token ao endpoint da Microsoft
    2. Microsoft valida client_id e client_secret
    3. Microsoft retorna access_token e expires_in
    4. Token é armazenado em cache
    5. Token é reutilizado até expirar
    6. Ao expirar, um novo token é solicitado


          Ou Seja, ao utilizar esse modelo de envio de e-mail sempre será enviado no header da requisição o token que foi gerado anteriormente com as credenciais informadas.

          

É extremamente importante que o cliente esteja com as configurações corretas no portal do azure, para que o envio de e-mail funcione corretamente.

Abaixo segue o passo a passo utilizado no desenvolvimento para conseguir realizar o envio:

Registro do Aplicativo

  1. Acessar o portal Azure
  2. Ir em Microsoft Entra ID
  3. Selecionar App registrations
  4. Criar um novo aplicativo

Campos importantes:

  • Nome do aplicativo (ex: TSS-Mail-Graph)
  • Diretório: Single tenant


Criação da Credencial (Client Secret)

  1. Acessar o aplicativo registrado
  2. Ir em Certificates & secrets
  3. Criar um Client Secret
  4. Guardar imediatamente o valor gerado(Pois ao atualizar a aba irá ocultar o secret ou exclua e gere um novo, o campo valor do print abaixo se trata do client_secret)
  5. Em visão geral, você irá conseguir ver o tenant_id e o client_id. (Tenant_id = ID do Diretório, Client_id = ID do aplicativo).

Permissões de API

  Adicionar permissões:

  • Microsoft Graph
    • Application permissions
      • Mail.Send

Após adicionar:

  • Executar Grant admin consent
  • É crucial que o Mail.Send esteja com tipo aplicativo e não delegado, se não o envio não será feito corretamente.

⚠️ Sem o consentimento de admin, o envio de e-mails não funciona.


⚠️Outro detalhe é que deve ser utilizada uma conta onde possua assinatura do offce365 e possua acesso ao serviço do microsof exchange, veja no print abaixo.

Estou logado com minha conta que realiza os envios dos e-mails e o usuário daquela conta possui uma licença atribuida.

04. DEMAIS INFORMAÇÕES

SendMail Microsoft.

05. ASSUNTOS RELACIONADOS

        Não Há.