Provedor de segurança de autenticação de aplicativo no Jitterbit App Builder
Visão geral
Esta página detalha como configurar o provedor de segurança Autenticação de Aplicativo, um dos métodos de autenticação de usuário suportados pelo App Builder (veja Métodos de autenticação de usuário para uma visão geral de todos eles). Com a Autenticação de Aplicativo, você cria uma página de login personalizada usando as ferramentas do App Builder, e o App Builder gerencia o fluxo de redirecionamento: quando um usuário não autenticado tenta acessar uma página protegida, o App Builder o redireciona para sua página de login e, após uma autenticação bem-sucedida, o retorna para a página que originalmente solicitou.
Diferente da autenticação local e do SSO, este método não fornece capacidades de gerenciamento de usuários integradas e, portanto, requer uma configuração consideravelmente maior. O desenvolvedor é responsável por construir todos os aspectos do fluxo de autenticação, desde a validação de credenciais até o provisionamento de usuários e atribuição de grupos. Para detalhes sobre o que isso envolve, consulte a seção Fluxo de autenticação. Um guia detalhado de um cenário hipotético é fornecido na seção Guia de configuração passo a passo.
Casos de uso
A Autenticação de Aplicativo é o melhor método de autenticação de usuário quando:
-
Você precisa validar credenciais contra uma fonte de dados de sua escolha, em vez da tabela de usuários do App Builder.
-
Seu aplicativo requer integração com uma API de autenticação de terceiros.
-
Você precisa de um fluxo de MFA personalizado, como verificar um número de telefone com um código de acesso único (OTP).
-
Você deseja permitir que os usuários façam login de forma semi-anônima.
Fluxo de autenticação
A Autenticação de Aplicativo coloca o desenvolvedor no controle total do processo de login. O App Builder gerencia o redirecionamento dos usuários para sua página de login personalizada e de volta após uma autenticação bem-sucedida, mas toda a lógica intermediária deve ser projetada e construída pelo desenvolvedor. Compreender esse fluxo com precisão é, portanto, essencial: ele determina quais componentes você precisa construir e como eles se encaixam.
O desenvolvedor é responsável por implementar o seguinte:
-
Validar as credenciais do usuário em relação a uma fonte de dados.
-
Implementar MFA ou fatores de autenticação secundários, se necessário.
-
Criar e provisionar contas de usuário.
-
Atribuir usuários a grupos e configurar permissões.
-
Construir fluxos de redefinição de senha e recuperação de conta.
-
Aplicar políticas de senha.
Quando um usuário tenta fazer login, a seguinte sequência de eventos ocorre:
-
Solicitação inicial: Um usuário não autenticado tenta acessar um "link profundo" para uma página dentro do seu aplicativo que requer login. O link pode até conter parâmetros de URL.
Exemplo de URLhttps://<seu-domínio>/app/MyApp/MyProtectedPage?orderId=123 -
Desafio de autenticação: O App Builder determina que o usuário não está logado e que a página requer autenticação. Ele inicia um "desafio".
-
LoginPath O App Builder redireciona o usuário para a página de login personalizada definida na propriedade LoginPath do provedor de segurança de Autenticação da sua Aplicação.
Importante
Para que isso aconteça automaticamente, você deve fazer o seguinte:
-
Definir este provedor de segurança como o provedor de Autenticação Padrão para sua aplicação. (Isso substitui qualquer padrão global que possa estar definido em IDE > Provedores de Segurança > Configuração > Autenticação Padrão.)
-
Ativar a opção Redirecionar em Desafio.
-
-
Usuário faz login: O usuário insere suas credenciais na sua página de login personalizada e envia o formulário.
-
Regra de autenticação é executada: Sua regra de autenticação personalizada é executada, verifica as credenciais e faz o login do usuário no App Builder.
-
Redirecionar para a página original: Após um login bem-sucedido, o App Builder redireciona automaticamente o usuário de volta para a página que ele tentou acessar originalmente, incluindo todos os parâmetros de URL originais.
Visão geral da configuração
Para configurar a Autenticação da Aplicação, você precisa configurar vários componentes em seu ambiente e dentro de sua aplicação.
Configuração do ambiente
O seguinte deve ser configurado em cada ambiente (por exemplo, Dev, QA e Produção):
-
Aplicativo da página de login: Um aplicativo App Builder separado e autônomo que serve como seu formulário de login.
-
Provedor de segurança de autenticação do aplicativo: O provedor de segurança que define o comportamento de login personalizado.
-
Contas de usuário genéricas: Uma ou mais contas de usuário no App Builder às quais os usuários autenticados são mapeados.
Configuração do aplicativo
Você deve configurar estes itens em seu aplicativo principal:
-
Regra de autenticação: Uma regra de negócios que contém a lógica para verificar as credenciais do usuário.
-
(Opcional) Tabelas de suporte: Tabelas para gerenciar sessões de usuário, senhas e dados de usuário específicos do aplicativo.
Guia de configuração passo a passo
Os seguintes passos orientam sobre a configuração completa da Autenticação do Aplicativo. Para tornar as instruções mais concretas, cada passo inclui um exemplo baseado em um cenário simples: um portal de clientes que valida as credenciais do usuário contra uma fonte de dados externa (chamada Customers) contendo endereços de e-mail e hashes de senhas. Todos os clientes autenticados são mapeados para uma única conta de usuário genérica do App Builder. Sua implementação pode diferir nos detalhes, mas a estrutura e a sequência dos passos serão as mesmas.
1. Criar o aplicativo da página de login
A página de login é um aplicativo App Builder autônomo cujo único propósito é coletar e enviar as credenciais do usuário. Deve ser um aplicativo separado do seu aplicativo principal para que usuários não autenticados possam acessá-lo antes de fazer login.
Para criar o aplicativo, siga os passos em Criar um novo aplicativo. Uma vez que o aplicativo exista, configure sua página de login com os seguintes requisitos:
-
A página deve ser acessível ao grupo Usuário Anônimo. Isso é necessário porque usuários não autenticados devem ser capazes de acessar a página de login antes de terem feito login. Sem isso, o redirecionamento de desafio falhará.
-
A página deve conter um painel que funcione a partir de uma tabela usada para capturar as credenciais inseridas no formulário. A tabela Session é a escolha recomendada, pois armazena os valores do formulário para a sessão atual sem persistir esses dados. Alternativamente, você pode usar uma tabela personalizada (por exemplo, uma tabela
LoginAttemptconfigurada para o modo Add, de modo que cada tentativa de login insira um novo registro). Sua regra de autenticação lê as credenciais da tabela que você escolher. -
A página precisa de um ou mais campos editáveis para capturar as credenciais do usuário (como Email, Email ou Número de Telefone).
-
(Opcional) Um campo Senha com validação de senha configurada.
-
Um botão Login que aciona sua regra de autenticação. Este botão não deve linkar para nenhuma página; seu único propósito é executar a regra.
-
(Opcional) Links para fluxos de Esqueceu a Senha ou Inscrever-se, se sua aplicação exigir.
Por exemplo, o aplicativo de login poderia ser chamado de Login do Cliente, contendo uma única página chamada Entrar, que teria dois campos de credenciais baseados na tabela Session: um campo Email e um campo Senha com validação de senha configurada. Um botão Entrar então aciona a regra de autenticação.
2. Criar o provedor de segurança de autenticação da aplicação
Para criar o provedor de segurança de autenticação da aplicação, siga estas etapas:
-
Selecione IDE > Provedores de Segurança.
-
No painel Autenticação do Usuário, clique em + Autenticação do Usuário.
-
Na página Provedor, defina o seguinte:
-
Nome: Um nome para seu provedor (por exemplo,
CustomerPortalAuth). -
Tipo: Selecione Autenticação da Aplicação.
-
Habilitado: Deixe isso desabilitado até que toda a configuração esteja completa.
-
Mostrar no Formulário de Login: Marque esta caixa.
-
Página Padrão: Selecione a página de destino padrão que um usuário deve ver após fazer login, se ele não tentou acessar originalmente uma página de link profundo específica. A página deve ser marcada como Pública em suas configurações de Edge Case.
-
-
Página de Sair: Selecione a página para a qual os usuários são redirecionados após sair. Se você deseja que os usuários retornem à sua página de login personalizada após sair, selecione essa página aqui. A página selecionada deve ser marcada como Pública em suas configurações de Edge Case.
-
Clique em Salvar.
-
Em Propriedades, clique em + Propriedade.
-
Na janela pop-up de Propriedades, defina os valores da seguinte forma:
-
Parâmetro: Selecione
LoginPath. -
Valor: Insira o caminho relativo à raiz do seu aplicativo de página de login. O caminho deve ser codificado em URL e começar com uma
/.Exemplo/app/Customer%20Login/Sign%20In
-
-
Salve as propriedades e feche a janela pop-up.
3. Configurar uma conta de usuário genérica
O App Builder fornece duas abordagens principais para lidar com contas de usuário com Autenticação de Aplicativo:
-
Mapeamento para uma conta de usuário genérica: Isso envolve a criação de uma ou mais contas de usuário pré-existentes no App Builder às quais os usuários externos autenticados são mapeados. Isso é particularmente útil para cenários como acesso semi-anônimo (por exemplo, usando um número de telefone e OTP) onde todos os usuários externos podem compartilhar uma conta de baixo privilégio.
-
Provisionamento dinâmico de usuários: Essa abordagem mais avançada envolve a criação de contas de usuário individuais no App Builder em tempo real durante o processo de login.
Esta seção foca na primeira abordagem: mapeamento para uma conta de usuário genérica. Para fazer isso, siga estas etapas:
-
Selecione IDE > Gerenciamento de Usuários e crie uma nova conta de usuário (por exemplo,
PortalUser). Esta é a conta que fornece as permissões dentro do aplicativo. -
Atribua o usuário aos Grupos que concedem os papéis necessários para sua aplicação.
-
Em Identidades, clique em + Identidade para criar uma identidade para este usuário com as seguintes configurações:
- Nome: Insira o valor que sua aplicação usará para identificar a pessoa, como seu nome de usuário ou endereço de e-mail. Isso deve ser único para cada usuário. O App Builder usará isso para encontrar a conta de usuário correta, a menos que você também forneça um valor para Identificador.
-
Identificador (opcional, mas recomendado): Insira um ID permanente e único para este usuário. Esta é a maneira mais confiável para o App Builder reconhecer um usuário, mesmo que seu endereço de e-mail ou nome de usuário mude. Se você fornecer isso, o App Builder sempre o usará primeiro para encontrar o usuário.
Por exemplo, no cenário do portal do cliente, a conta de usuário genérica é chamada PortalUser e sua Nome de identidade é definida como portal.user@example.com. Todos os clientes que se autenticam com sucesso são mapeados para esta conta.
4. Crie a regra de autenticação
Você precisa de uma regra de negócios para lidar com a lógica de autenticação real. Para configurá-la, siga estas etapas:
-
Crie uma Regra de Negócios CRUD XP que execute uma ação de Inserir.
-
Defina a Fonte de Dados Alvo como
Vinyle o Alvo como o objeto de dados públicoAuthenticate. -
Na SQL da regra, junte sua tabela de credenciais de usuário externo com a tabela usada pelo formulário da página de login (por exemplo, a tabela Session) para recuperar o nome de usuário e a senha inseridos pelo usuário.
Importante
Não use a tabela User integrada do App Builder para validar senhas. A tabela User não expõe o campo de senha por razões de segurança, tornando a validação de senhas contra ela impossível sem um plugin personalizado. Use uma fonte de dados externa para armazenar e validar as credenciais do usuário.
-
Mapeie as seguintes quatro colunas obrigatórias para o alvo
Authenticate:-
AuthenticateID: Um novo GUID. Use
newUUID(). -
ProviderId: O ID do seu provedor de segurança de autenticação de aplicativo.
-
AppUserId: Um identificador para o usuário final que está fazendo login (como seu e-mail ou nome de usuário). Isso é usado para auditoria via a função
who('appuserid'). -
Name: O nome da Identidade do usuário genérico para mapear (por exemplo,
portal.user@example.com). Isso pode ser codificado ou determinado dinamicamente com base nas credenciais do usuário.
-
Por exemplo, no cenário do portal do cliente, a SQL da regra junta a tabela Session com a tabela externa Customers no campo Email. Os mapeamentos de coluna são: AuthenticateID usa newUUID(), ProviderId é o ID do provedor CustomerPortalAuth, AppUserId é mapeado para o campo Email da tabela Session, e Name é definido como o valor fixo portal.user@example.com. Observe que a SQL exata para a junção, incluindo como a validação de senha é tratada, dependerá da estrutura da sua fonte de dados externa.
5. Habilitar redirecionamento automático em desafio
Para garantir que os usuários sejam enviados automaticamente para sua página de login personalizada ao acessarem uma página protegida, você deve habilitar essas duas configurações:
-
Configure o provedor de autenticação padrão:
(O provedor de autenticação padrão pode ser definido em todo o sistema ou no nível da aplicação. A configuração no nível da aplicação substitui a opção em todo o sistema.)
Para configurar o padrão no nível da aplicação, siga estas etapas:
-
Selecione IDE > Provedores de Segurança.
-
Em Autenticação do Usuário, selecione Mais > Gerenciar Aplicações.
-
Clique no ícone Editar para sua aplicação.
-
Defina Autenticação Padrão para o provedor de Autenticação da Aplicação que você criou.
-
Clique em Prosseguir e feche o popup.
-
-
Configure o redirecionamento em desafio:
-
Na página Provedores de Segurança, clique no ícone Abrir registro para seu provedor de Autenticação da Aplicação.
-
Em Provedor, clique em Editar.
-
Marque a opção Redirecionar em Desafio.
-
Clique em Salvar.
-
Por exemplo, no cenário do portal do cliente, defina Autenticação Padrão como CustomerPortalAuth para a aplicação Portal do Cliente.
6. Habilitar e testar
Uma vez que todas as etapas acima estejam completas, volte para o provedor de segurança de autenticação da sua aplicação no IDE e habilite-o. Agora você pode testar todo o fluxo de login.
Provisionamento de usuários e grupos
A Autenticação de Aplicativos lida apenas com a etapa de autenticação. Não cria automaticamente contas de usuário nem atribui permissões de grupo. Se seu aplicativo exigir que os usuários tenham direitos de acesso específicos após o login, você deve configurar isso separadamente.
Um problema comum após uma autenticação bem-sucedida é que os usuários recebem um erro de acesso negado ao tentar acessar a página inicial do aplicativo. Isso acontece quando a conta do usuário (ou a conta genérica à qual estão mapeados) não foi atribuída a um grupo com as permissões necessárias do aplicativo.
Para conceder a um grupo acesso a um aplicativo, consulte Provisionamento de grupos. Você deve usar Gerenciar Privilégios para adicionar o aplicativo ao conjunto de permissões do grupo e, em seguida, conceder os papéis apropriados.
Se seu fluxo também exigir a criação de contas de usuário programaticamente (por exemplo, registrando novos usuários no momento do login), consulte Provisionamento de usuários e grupos.
Tópicos avançados
Link para um aplicativo autenticado com parâmetros de URL
Uma das funcionalidades mais poderosas deste fluxo é a capacidade de enviar a um usuário um link para um registro específico ou uma visualização filtrada dentro do seu aplicativo. Como o App Builder preserva a URL originalmente solicitada (incluindo todos os parâmetros de consulta) durante o processo de autenticação, você pode construir links profundos sem nenhuma formatação especial. Por exemplo, você pode enviar a um usuário um link para um pedido específico: https://<seu-domínio>/app/MyApp/Orders?Orders.OrderId=5011. Quando o usuário não autenticado clica neste link, ele é levado à sua página de login e, após fazer login, é redirecionado para a página Orders com o pedido 5011 carregado automaticamente.
Acionar manualmente um desafio
Enquanto o App Builder desafia automaticamente usuários não autenticados quando acessam uma página protegida, você também pode acionar manualmente esse processo a partir da lógica do seu aplicativo. Isso é útil para cenários como a expiração da sessão de um usuário ou para fornecer um botão Login dedicado no cabeçalho do seu aplicativo.
Para fazer isso, você cria uma regra de negócios simples que insere um registro no objeto de dados público Challenge. Você pode então anexar essa regra a um evento, como um clique em botão.
Como criar um gatilho de login manual
-
Criar uma Regra de Negócios: Crie uma nova Regra de Negócios CRUD XP e dê um nome descritivo, como
Manual Login Challenge. -
Configurar o Alvo da Regra:
-
Defina a Fonte de Dados Alvo como
Vinyl. -
Defina o Alvo como o objeto de dados público
Challenge. -
Defina a Ação como
Insert.
-
-
Mapear o ID do Provedor: No design da regra, você só precisa mapear uma coluna. Mapeie o ID do seu provedor de segurança de Autenticação de Aplicação para a coluna ProviderId no alvo
Challenge. Você pode encontrar esse ID na página Security Providers no IDE. -
Acionar a Regra: Anexe essa nova regra de negócios a um evento. Por exemplo, você poderia adicionar um botão Login ao cabeçalho da sua aplicação e configurar seu evento
on-clickpara executar a regraManual Login Challenge.
Quando essa regra é executada, o App Builder redireciona imediatamente o usuário para a página de login definida no LoginPath do seu provedor de segurança, preservando a página atual do usuário para que ele possa ser retornado a ela após um login bem-sucedido.