Autenticação de dois fatores (2FA) e Active Directory no Elipse E3.

1. Introdução

Em projetos que exigem camadas adicionais de segurança de acesso, é comum a dúvida sobre a possibilidade de usar autenticação de dois fatores (2FA) no Elipse E3 e sobre a integração com o Active Directory (AD) — por exemplo, usando autenticadores via API ou as contas de domínio corporativas. Este artigo esclarece o que a plataforma oferece e apresenta uma alternativa para implementar um segundo fator na própria aplicação, por meio de um código enviado por e-mail.

2. Autenticação de dois fatores (2FA)

O Elipse E3 não oferece suporte nativo à autenticação de dois fatores (2FA), seja por meio de autenticadores via API, seja por protocolos de federação ou diretório. Os seguintes mecanismos não são suportados:

Mecanismo Suporte no E3
Autenticadores de 2FA via API Não suportado
SAML Não suportado
OAuth Não suportado
LDAP Não suportado
Microsoft Entra ID (antigo Azure Active Directory) Não suportado

4. Alternativa: 2FA por código enviado por e-mail

Como a interface nativa do E3 não oferece 2FA, é possível implementar um segundo fator na própria aplicação, criando uma tela de login personalizada. O fluxo é:

  1. O usuário informa usuário e senha nos campos da tela.
  2. Um botão dispara um script que gera um código aleatório (ex.: 6 dígitos) e o envia por e-mail (via CDO) para o endereço pré-cadastrado do usuário.
  3. O script solicita o código ao usuário e valida se o valor digitado é igual ao gerado.
  4. Se conferir, o login é efetivado via Application.LoginWindowsUser.

Exemplo de script (evento Click do botão de login)

On Error Resume Next
' --- 1) E-mail pré-cadastrado do usuário ---
Dim emailDestino
emailDestino = "e-mail@dominio.com.br"

' --- 2) Gera código aleatório de 6 dígitos ---
Randomize
Dim codigoGerado
codigoGerado = CStr(Int(100000 + Rnd() * 900000))

' --- 3) Envia o e-mail via CDO ---
Dim mail, config, schema
Set mail   = CreateObject("CDO.Message")
Set config = CreateObject("CDO.Configuration")
schema = "http://schemas.microsoft.com/cdo/configuration/"

config.Fields.Item(schema & "sendusing")             = 2
config.Fields.Item(schema & "smtpserver")            = "smtp.gmail.com"
config.Fields.Item(schema & "smtpserverport")        = 465
config.Fields.Item(schema & "smtpauthenticate")      = 1
config.Fields.Item(schema & "smtpusessl")            = True
config.Fields.Item(schema & "sendusername")          = "e-mail@gmail.com"
config.Fields.Item(schema & "sendpassword")          = "senha"
config.Fields.Item(schema & "smtpconnectiontimeout") = 10
config.Fields.Update

Set mail.Configuration = config
mail.To       = emailDestino
mail.Sender   = "remetente@dominio.com.br"
mail.Subject  = "Codigo de verificacao - E3"
mail.TextBody = "Seu codigo de verificacao e: " & codigoGerado
mail.Send

If Err.Number <> 0 Then
    MsgBox "Falha ao enviar e-mail: " & Err.Description, vbCritical, "Erro 2FA"
    Err.Clear
    Exit Sub
End If

' --- 4) Solicita o código ao usuário (bloqueante) ---
Dim codigoDigitado
codigoDigitado = InputBox("Um codigo foi enviado para " & emailDestino & vbCrLf & _
                          "Digite o codigo para continuar:", "Autenticacao em duas etapas")

If codigoDigitado = "" Then
    MsgBox "Autenticacao cancelada.", vbExclamation, "2FA"
    Exit Sub
End If

If Trim(codigoDigitado) <> codigoGerado Then
    MsgBox "Codigo incorreto. Acesso negado.", vbCritical, "2FA"
    Exit Sub
End If

' --- 5) Código validado: efetua o login ---
' spUsuario e spSenha são os campos (Setpoint) da tela de login
MsgBox "Codigo validado com sucesso!", vbInformation, "2FA"
Application.LoginWindowsUser Screen.Item("spUsuario").Value, Screen.Item("spSenha").Value

Observações e boas práticas

  • Trata-se de uma implementação da aplicação, não de um recurso nativo do E3.
  • Substitua os placeholders: servidor e porta SMTP, conta e senha de envio, e o e-mail de destino do usuário.
  • Os valores passados ao LoginWindowsUser vêm dos campos da tela de login (Screen.Item("spUsuario").Value e Screen.Item("spSenha").Value) preenchidos pelo usuário — não deixe credenciais fixas no script.
  • Evite manter a senha da conta SMTP em texto puro no script; use uma conta de envio dedicada e proteja o acesso ao projeto.
  • InputBox e MsgBox são bloqueantes — adequados ao fluxo de login.
  • O LoginWindowsUser é o método do Viewer que efetiva a autenticação pela conta de domínio (ver a seção anterior).
  • Como o código é gerado e validado no próprio script, avalie requisitos adicionais de segurança (ex.: expiração do código e limite de tentativas).

5. Artigos relacionados


Print Friendly, PDF & Email

Este artigo foi útil? Was this helpful?

Classificação média - Average rating 0 / 5. Count: 0

Deixe seu Comentário

Seu endereço de e-mail não será publicado. Campos marcados com asterisco são obrigatórios *