Personalizar login móvel com código
Objetivos de aprendizagem
Após concluir este módulo, você estará apto a:
- Localizar e renomear o manipulador de detecção de login.
- Adicionar a funcionalidade de login social ao manipulador de detecção de login.
- Coletar informações do usuário com atributos de solicitação.
Localizar o manipulador de detecção de login padrão
Quando você cria seu manipulador de detecção de login na página Login e registro, o Salesforce cria o manipulador padrão como uma classe do Apex. Esse manipulador pode ser encontrado juntamente com outras classes do Apex na página Classes do Apex da sua organização.
- Na página Login & Registration (Login e registro), em Login Page Setup (Configuração de página de login), anote (ou copie) o nome do manipulador listado na caixa de texto Login Discovery Handler (Manipulador de descoberta de login). Se você precisar abrir a página Login & Registration (Login e registro) novamente, em Setup (Configuração), na caixa Quick Find (Busca rápida), insira All Sites (Todos os sites) e selecione All Sites (Todos os sites). No site NTO Customers (Clientes da NTO), clique em Workspaces (Espaços de trabalho). Clique no bloco Administration (Administração) e, em seguida, clique em Login & Registration (Login e registro).
- Em outra guia, em Setup (Configuração), insira
Apex Classes
(Classes do Apex) na caixa Quick Find (Busca rápida) e clique em Apex Classes (Classes do Apex). O manipulador aparece em uma lista de classes na página Classes do Apex.
- Localize (ou encontre) o nome do manipulador de detecção de login na lista. Não é tão fácil procurar o manipulador na lista de classes do Apex, não é? Podemos corrigir isso renomeando o manipulador para algo mais reconhecível. Além disso, com a renomeação você pode ver rapidamente que o manipulador é personalizado. O manipulador não precisa mais ser "criado automaticamente", ou seja, vamos mudar o nome para refletir isso.
- Clique em Editar ao lado do nome do manipulador. O nome do manipulador aparece na primeira linha de código.
- Substitua o nome do Salesforce pelo seu e clique em Salvar. Retorne à sua página Login & Registration (Login e registro) e atualize a página. Note que o manipulador de detecção de login foi atualizado com seu novo nome.
Entender o manipulador de detecção de login padrão
Antes de começarmos a personalizar o manipulador, vamos nos familiarizar com o manipulador gerado pelo Salesforce. Você pode ver o exemplo completo de código localizado no Guia do desenvolvedor do Apex do Salesforce: Implementação do exemplo LoginDiscoveryHandler. Aqui descrevemos como o manipulador de descoberta de login funciona.
O primeiro passo é obter o identificador (email ou número de telefone), transmitido da página de login. Em seguida, verifique se o identificador está em um formato válido.
Consulte no banco de dados um usuário associado a esse identificador. Se o usuário estiver ativo e o identificador for único, confira se o usuário já verificou esse identificador.
Se o identificador tiver sido verificado, envie um código de verificação por email ou mensagem de texto e especifique para onde o usuário deve ir após uma verificação bem sucedida. Em seguida, redirecione o usuário para a página Verificar, na qual ele digitará o código de verificação. Se o identificador não tiver sido verificado, redirecione o usuário para a página onde o usuário digitará uma senha.
Agora vamos ver como é a lógica do manipulador como um gráfico.
Aqui está outra maneira de olhar para o processo de verificação de identidade.
- Obtenha o identificador.
- O identificador é válido?
- Se for válido, procure um usuário associado ao identificador.
- O usuário está ativo?
- Se estiver ativo, o identificador é único?
- Se sim, o usuário verificou sua identidade com esse identificador?
- Se sim, o identificador foi verificado, envie um código de verificação. Se não, o identificador não foi verificado, peça uma senha.
- Se o código de verificação ou senha foi inserido corretamente, direcione o usuário para a página inicial do site do Experience Cloud.
Personalizar o manipulador de detecção de login para login social
Os clientes geralmente gostam de fazer login em um site com suas credenciais de mídias sociais, como Twitter, Google ou LinkedIn. Se você configurou sua organização para permitir o login social, a detecção de login fica ainda mais fácil para seus clientes. Você pode adicionar lógica ao manipulador para login social programático. Ele redireciona os clientes diretamente para a mídia social determinada pela sua lógica de manipulador.
-
Configurar provedores de autenticação do Salesforce. O primeiro passo para personalizar o manipulador para login social é verificar se sua organização está configurada para as mídias sociais com as quais deseja ter compatibilidade. Sua organização precisa ter provedores de autenticação para se conectar a cada uma delas. A Salesforce fornece vários provedores de autenticação padrão para se conectar com redes sociais populares, e vamos adicionando novos à medida que elas surgem. Se você não tem as redes sociais que deseja, pode criá-las com poucos cliques.
- Em Setup (Configuração), insira
Auth. Providers
(Provedores de autenticação) na caixa Quick Find (Busca rápida) e selecione Auth. Providers (Provedores de autenticação).
- Crie um provedor de autenticação para uma mídia social. Sua organização Playground não está configurada com nenhum provedor de autenticação. Se você quiser criar um, pode consultar a unidade Configurar inscrição social no módulo Identidade para clientes do Trailhead. Essa unidade mostra como configurar provedores de autenticação e adicioná-los à página de login com cliques.
-
Localizar as URLs de SSO para sua mídia social. Quando você adiciona provedores de autenticação programaticamente, precisa adicionar as URLs de SSO apropriadas à mídia social.
- Para retornar à página Auth. Providers (Provedores de autenticação), em Setup (Configuração), insira
Auth. Providers
(Provedores de autenticação) na caixa Quick Find (Busca rápida) e selecione Auth. Providers (Provedores de autenticação).
- Clique no link do nome da sua mídia social desejada. Você clica no nome em si, não no link Editar.
- Expanda Sites do Experience Cloud. As URLs de SSO para cada provedor de autenticação em sua organização estão listadas.
-
Adicionar a lógica de SSO ao manipulador de detecção de login. Para este exercício, a lógica SSO é fornecida para o site de Clientes da NTO. Para sua organização de produção, adicione lógica ao Login Discovery handler (Manipulador de descoberta de login) para determinar quando os usuários são redirecionados para a mídia social. Seu código personalizado inclui lógica para determinar se o usuário deve usar uma mídia social ou fazer login diretamente no Salesforce. Por exemplo, ele pode pesquisar um campo personalizado no objeto Usuário. Aqui está um exemplo que implementa o login social usando o objeto padrão ThirdPartyAccountLink (TPAL). Uma lista de links de conta de terceiros (TPAL) é gerada quando os usuários de uma organização se autenticam usando um provedor de autenticação de terceiros. Este exemplo consulta a tabela TPAL e redireciona o usuário para fazer login via Facebook ou LinkedIn se encontra o TPAL associado ao email do usuário.
//Redirect to Social Sign-On private PageReference getSsoRedirect(User user, String startUrl, Map<String, String> requestAttributes) { // You can look up whether the user can log in with their social credentials.
List<ThirdPartyAccountLink> providers = [select provider from ThirdPartyAccountLink where Handle = :user.email]; String provider = providers[0].Provider; if (provider == 'facebook') { return new PageReference([select SsoKickoffUrl from AuthProvider where DeveloperName='facebook'].SsoKickoffUrl); } else if (provider == 'linkedin') { Return new PageReference([select SsoKickoffUrl from AuthProvider where DeveloperName='linkedin'].SsoKickoffUrl); } else { return null; }
Coletar informações do usuário com atributos de solicitação
Você pode determinar políticas de login com base no estado do navegador do usuário quando acessa a página de login. Por exemplo, você pode ter políticas diferentes dependendo de onde as pessoas estão fazendo login, Estados Unidos ou na China, por exemplo.
Para coletar os dados do navegador, use o parâmetro requestAttributes do método de login LoginDiscoveryHandler. O parâmetro transmite estes valores: CommunityUrl, IpAddress, UserAgent, Platform, Application, City, Country e Subdivision. Os valores da cidade, do país e da subdivisão vêm da geolocalização do IP.
CommunityUrl=http://MyDomainName-dev-ed.my.site.com:5555/discover IpAddress=55.555.0.0 UserAgent=Mozilla/5.0(Macintosh; Intel Mac OS X 10_13_4) Version/11.1 Safari/605.15 Platform=Mac OSX City=Chicago Country=United States Subdivision=Illinois
Veja um exemplo que usa valores de geolocalização de IP.
private PageReference getSsoRedirect(User user, String startUrl, Map<String, String> requestAttributes) { // Send US users through a local IdP service if(requestAttributes.get('Country') == 'United States') { String ssoURL = 'https://mycompany.com/idp'; return new PageReference(ssoURL); } return null; }
Aqui está um exemplo de usuários de dispositivos móveis (iOS).
private PageReference getSsoRedirect(User user, String startUrl, Map<String, String> requestAttributes) { // Send iOS users through Facebook SSO if(requestAttributes.get('Platform') == 'iPhone') { String ssoURL = 'https://<MyDomainName>.my.salesforce.com/nto/services/auth/sso/Facebook'; return new PageReference(ssoURL); } return null; }
Garantir a exclusividade dos usuários
Sua organização de produção pode ter vários usuários com o mesmo endereço de email e número de celular verificados. Mas seus clientes precisam ter identificadores únicos. Para resolver esse problema, você pode adicionar algumas linhas de código ao manipulador de detecção de login que filtra os usuários para garantir a exclusividade.
A classe LoginDiscoveryHandler descrita no Guia de desenvolvedor do Apex traz um exemplo de código que garante que os usuários com a licença External Identity sejam únicos. Você pode adaptar o código para dar suporte a outros casos de uso. Por exemplo, você pode modificar o código para lidar com usuários com outras licenças ou critérios.
Você aprendeu a configurar suas páginas de login móvel e a personalizá-las. Na próxima unidade, você aprenderá como rastrear seu progresso com a configuração de relatórios, gráficos e um painel para exibi-los.