1. Introdução
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 |
3. Integração com Active Directory: usuários do tipo Windows
Embora não haja 2FA nem federação via LDAP/SAML/OAuth/Entra ID, o E3 integra-se às contas do domínio por meio dos usuários do tipo Windows.
Ao cadastrar um usuário na segurança do E3, é possível escolher o tipo de autenticação:
| Tipo | Autenticação |
|---|---|
| Elipse E3 | Senha gerenciada pelo próprio E3. |
| Windows | Conta do domínio/Active Directory (autenticação integrada do Windows), sem senha gerenciada separadamente no E3. |
Características dessa integração:
- Indicada para plantas com AD e ambientes multi-site, aproveitando as contas corporativas.
- É possível misturar usuários do tipo Elipse E3 (ex.: desenvolvedores) e do tipo Windows (ex.: operadores com conta de domínio) no mesmo Domínio.
- As permissões continuam sendo definidas no E3, pelo modelo de Usuários e Grupos, independentemente do tipo de autenticação.
A integração com o Active Directory é uma autenticação de fator único (a conta de domínio). Ela não adiciona um segundo fator (2FA) e não é uma federação configurável via LDAP/SAML/OAuth/Entra ID — utiliza a autenticação integrada do Windows.
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 é:
- O usuário informa usuário e senha nos campos da tela.
- 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.
- O script solicita o código ao usuário e valida se o valor digitado é igual ao gerado.
- 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
LoginWindowsUservêm dos campos da tela de login (Screen.Item("spUsuario").ValueeScreen.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.
InputBoxeMsgBoxsã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).
