Exemplos de fluxo de login
Você pode usar um fluxo de login para personalizar a experiência de login e integrar processos de negócios à autenticação do Salesforce. Casos de uso comuns incluem coleta e atualização de dados do usuário durante o login, a configuração da autenticação multifator ou a integração de métodos de autenticação forte de terceiros.
Edições obrigatórias
| Disponível em: Salesforce Classic e Lightning Experience |
| Disponível em: Essentials, Professional, Enterprise, Performance, Unlimited e Developer Editions |
Vamos analisar três casos de uso comuns para fluxos de login:
- Coletar e atualizar dados do usuário durante o login
- Aplicar autenticação multifator (MFA) personalizada
- Integrar mecanismos de autenticação forte de terceiros
Coletar e atualizar dados do usuário durante o login
Esse fluxo de login solicita que os usuários confirmem ou atualizem o número de telefone que, então, é atualizado nas respectivas contas de usuário.
- Consultar o objeto do usuário para números de telefone do usuário, caso existam.
- Exibir os números e solicitar que o usuário os confirme ou atualize.
- Atualizar o objeto do usuário com os novos números, se fornecidos.
Criar o fluxo
- Vá para https://help.salesforce.com/articleView?id=flow_builder.htm&language=pt_BR.
-
Na guia Gerente na caixa de ferramentas, clique em Novo recurso e crie uma variável para armazenar o ID do usuário.
O compromisso de login passa uma lista de atributos de contexto para o fluxo. Quando o fluxo começa, os valores de atributo correspondentes são preenchidos na variável de entrada adequada. Para usar esses atributos no fluxo, defina as variáveis de texto locais usando o formato LoginFlow_ATTRIBUTE_NAME. Por exemplo, LoginFlow_UserId, que você pode usar para verificar o ID do usuário que está efetuando login e consultar o objeto de usuário associado.

Após adicionar cada variável, elas aparecerão na guia Gerente.
Há suporte para as seguintes variáveis de entrada.
- LoginFlow_LoginType
- LoginFlow_LoginSubType
- LoginFlow_IpAddress
- LoginFlow_UserAgent
- LoginFlow_Platform
- LoginFlow_Application
- LoginFlow_Community
- LoginFlow_SessionLevel
- LoginFlow_UserId
Você também pode armazenar esses atributos como variáveis de saída no fluxo.
- LoginFlow_FinishLocation (tipo Texto): esta variável determina para que local enviar o usuário quando o fluxo terminar.
- LoginFlow_ForceLogout (tipo booleano): quando essa variável é definida como
true, o usuário é imediatamente desconectado.
-
Na guia Gerente, clique em Novo recurso para criar uma variável de registro para armazenar valores do usuário.

-
Adicione um elemento Registros para pesquisar o usuário que está tentando efetuar login.

-
Especifique os campos de usuário que você deseja armazenar na variável, por exemplo, Phone e MobilePhone.

-
Crie uma tela de boas-vindas para pedir para o usuário confirmar os números de telefone no arquivo.

- Para definir um valor padrão para cada componente de telefone na tela, defina Valor para o campo adequado na variável de registro {!user}. Para Telefone, isso é {!user.Phone}. Para celular, isso é {!user.mobilePhone}.
-
Para armazenar a entrada de cada componente de telefone do usuário, defina Valor na seção Armazenar valores de saída do componente para o mesmo campo que na etapa anterior.

-
Adicione um elemento Atualizar registros que usa os valores na variável de registro {!user} para atualizar os números de telefone do usuário. Uma vez que você armazenou as saídas de cada componente da tela de Telefone em campos na variável de registro {!user}, o fluxo usa esses valores para atualizar o usuário.

-
Conecte os elementos entre si.

-
Dê um nome ao fluxo de login e salve-o.

-
Conecte o fluxo de login a um perfil de usuário. A prática recomendada é criar um usuário de teste dedicado com um perfil de teste.
Nota Não associe um fluxo de login a seu perfil de administrador até ter certeza de que o fluxo de login funcione corretamente. Caso contrário, se ele falhar, você não conseguirá efetuar login na organização. - Faça logout e, em seguida, faça um novo login como o usuário de teste para testar o fluxo.
Quando você testar o exemplo Fluxo de boas-vindas usando o Lightning Experience, ele terá a seguinte aparência.
Configurar autenticação multifator (MFA)
Esse exemplo implementa um fluxo de login que aprimora a autenticação de senha de uso único por tempo limitado (TOTP) com um método MFA compatível com o Salesforce. O algoritmo TOTP calcula uma senha de uso único usando uma chave secreta compartilhada e o horário atual.
O fluxo faz o seguinte.
- Caso o usuário ainda não esteja registrado, ele gerará uma nova chave secreta e solicitará ao usuário que registre a chave com um código de Resposta rápida (QR). Depois que o usuário fornece um token de TOTP válido, a chave secreta é armazenada no registro do usuário. A chave é reutilizada em logins futuros.
- Caso o usuário já esteja registrado, o fluxo solicitará apenas o token de TOTP.
Os usuários podem usar um aplicativo de autenticação baseada em tempo, como o Salesforce Authenticator ou o Google Authenticator, para ler o código QR e gerar um token de TOTP.
Você pode aprimorar esse fluxo e personalizar a experiência do usuário ao adicionar um logotipo corporativo e cores da sua empresa. Você pode até mesmo adicionar e aplicar diferentes políticas. Por exemplo, você pode criar um processo MFA baseado em IP que exige um segundo fator de autenticação somente quando o endereço IP está fora de um intervalo específico.
Neste exemplo, usamos o objeto TwoFactorInfo e a classe do Apex Auth.SessionManagement para personalizar e gerenciar a autenticação multifator TOTP baseada em padrões a qual o Salesforce oferece suporte.
- Consultar o objeto TwoFactorInfo do usuário atual. Se o usuário não estiver registrado, gerar uma chave.
- Determinar se o usuário já está registrado com TOTP.
- Se o usuário já estiver registrado, solicitar o token de TOTP.
- Se o usuário não estiver registrado, solicitar que se registre com um código QR e forneça o token de TOTP.
- Validar o token de TOTP. Se o token for válido, encerrar o fluxo de login e conectar o usuário.
- Se o token de TOTP for inválido, enviar o usuário novamente para a etapa 2.
Configurar o fluxo de TOTP
-
Crie as variáveis.
- secret: armazena a chave secreta para todas as operações multifator.
- qr_url: armazena o URL da codificação do código QR da chave secreta.
- IsTokenValid: armazena o resultado da verificação.
secret e qr_url são variáveis de Texto, e IsTokenValid é uma variável Booliana.

-
Para gerar um novo segredo para usuários que ainda não estão registrados com um TOTP, arraste um elemento de ação do Apex (legado) para a tela e selecione a ação de legado do Apex TOTPPlugin.

Ações do Apex são classes do Apex que estendem a funcionalidade padrão de um fluxo. Você pode usar uma ação do Apex para efetuar um cálculo complexo, fazer chamadas de API para serviços externos e executar outras tarefas.
TOTPPlugin acessa os métodos de TOTP do Salesforce, gera uma chave secreta baseada em tempo com um código QR e valida o TOTP. A classe TOTPPlugin do Apex está disponível no pacote de exemplos de fluxo de login.
A ação legada do Apex tem esses parâmetros de entrada.
- OTP_INPUT: o token de TOTP fornecido pelo usuário.
- OTP_REGISTRATION_INPUT: o token de TOTP que o usuário fornece ao se registrar pela primeira vez.
- SECRET_INPUT: a chave secreta usada para gerar o TOTP.
Retorna os seguintes valores de saída.
- SECRET_OUTPUT: uma chave secreta gerada pelo plug-in.
- QR_URL_OUTPUT: uma codificação QR da chave secreta.
- IsValid_OUTPUT: se a validação teve sucesso, ela retornará
true. Caso contrário, ela retornaráfalse.
Configure essa instância de TOTPPlugin para gerar uma nova chave secreta e o código QR caso o usuário ainda não esteja registrado. Nesse caso, nenhuma entrada é passada.

A chave secreta e o URL do código QR são armazenados nas variáveis qr_url e secret.

-
Configure um elemento de Decisão para registrar um usuário.
Essa decisão verifica se secret é nulo. Se não for null, o usuário deve se registrar. Então, defina Registro como um resultado da decisão. Caso contrário, o usuário já estará registrado e deverá fornecer apenas o token de TOTP. Altere o rótulo do resultado padrão para Obter TOTP.

-
Configure a tela Obter TOTP.
Os usuários já registrados são encaminhados para essa tela e solicitados a informar o token de TOTP. Mais adiante no fluxo, é possível usar o token TOTP que os usuários inserem fazendo referência ao nome da API do componente Texto (OTP_input).

-
Configure a tela Registro. Peça para o usuário ler o código QR, inicializar o aplicativo cliente TOTP e inserir o token TOTP.

-
Para validar o token de TOTP inserido pelo usuário, configure outra instância da ação legada do Apex TOTPPlugin.
A ação legada do Apex TOTPPlugin tem suporte para esses casos de uso.
- O usuário vem da tela Registro. O usuário precisa ler o código QR e fornecer o token de TOTP. O segredo e o token de TOTP são passados para TOTPPlugin para validação. TOTPPlugin valida o token de TOTP com relação ao segredo. Se for válido, o segredo será registrado no registro do usuário e usado em logins futuros.
- O usuário vem da tela Obter token. O usuário já está registrado e fornece apenas o TOTP. O token de TOTP é passado por meio do parâmetro TokenInput para TOTPPlugin para validação.

O parâmetro isTokenValid retorna o status de validação, que então é armazenado na variável de fluxo isTokenValid.

-
Determine se deseja efetuar login do usuário configurando outro elemento Decisão com dois resultados possíveis.
- Se IsTokenValid for
true, o token será válido. - Caso contrário, o token será inválido.
Se a validação tiver sucesso, o usuário seguirá para o final do fluxo, clicará na próxima etapa e efetuará login no aplicativo. Se ocorrer falha na validação, o fluxo redirecionará o usuário de volta para a etapa 2 do fluxo. Na etapa 2, um usuário registrado deve fornecer um novo token de TOTP. Se ainda não estiver registrado, o usuário deverá se registrar e fornecer um novo token de TOTP.

- Se IsTokenValid for
-
Conecte os elementos entre si.
- Ao conectar a decisão Registro à tela Registro, escolha o resultado Registrar.
- Ao conectar a decisão Registro à tela Obter TOTP, escolha o resultado Obter TOTP.
- Ao conectar a decisão Login à decisão Registro, escolha o resultado O token é inválido.
- Salve o fluxo de login, ative-o e conecte-o a um perfil de usuário.
Integrar métodos de autenticação forte de terceiros
Você pode usar fluxos de login para interagir com provedores de autenticação externos de terceiros usando uma API.
Por exemplo, o Yubico oferece autenticação forte usando uma chave de segurança chamada YubiKey. O Yubico também fornece um exemplo de biblioteca do Apex e fluxo de login no GitHub. A biblioteca fornece as classes do Apex para validação de senhas de uso único (OTPs) YubiKey. As classes permitem que usuários do Salesforce usem uma YubiKey como segundo fator de autenticação durante o login. Para obter mais informações, consulte yubikey-salesforce-client.
Você também pode implementar um serviço de terceiros de entrega de SMS ou de mensagem de voz, como Twilio ou TeleSign, para implementar uma autenticação multifator baseada em SMS e fluxo de verificação de identidade. Para obter mais informações, consulte Implementar a autenticação multifator baseada em SMS de terceiros.
Pacote de exemplos de fluxo de login
O Pacote de amostras de fluxo de login é um pacote não gerenciado que instala diferentes exemplos de fluxo de login em sua organização do Salesforce. Ele contém os seguintes exemplos.
- Confirmação por email: enviar um email com um código de verificação.
- SF-TOTP: habilitar autenticação multifator TOTP.
- Multifator condicional: ignorar a autenticação multifator para usuários provenientes de um endereço IP confiável.
- Ativação do dispositivo: confirmar a identidade do usuário usando email ou autenticação multifator.
- Aceitar termos de serviço: solicitar que o usuário aceite os termos antes de continuar.

