Compreenda o provisionamento Just-in-Time
O provisionamento Just-in-Time é um processo usado em sistemas de gerenciamento de identidade e acesso para criar contas de usuário automaticamente à medida que elas fazem login em um sistema pela primeira vez. Este artigo explica os conceitos básicos do provisionamento Just-in-Time e responde a perguntas comuns sobre sua implementação.
Antes de discutirmos o provisionamento Just-in-Time, imagine que você está construindo um aplicativo SaaS B2B e deseja oferecer funções de membros, permitindo que membros se juntem facilmente ao seu workspace (tenant). Quais recursos você proporia? Aqui está uma lista de verificação para você:
Cenário | Fluxo |
---|---|
Convite do administrador | Usuários podem receber um convite por e-mail para ingressar na organização. |
Criação ou importação de usuário API de gerenciamento | Usuários podem usar uma conta de usuário criada previamente para ingressar na organização. |
Provisionamento Just-in-Time | Usuários que fazem login no app pela primeira vez podem ingressar na organização. |
Sincronização de Diretórios (ex.: SCIM) | Use a funcionalidade de Sincronização de Diretórios do IdP para testar os usuários no app com antecedência. |
O provisionamento Just-in-Time (JIT) é um processo usado em sistemas de gerenciamento de identidade e acesso para criar contas de usuário automaticamente quando eles fazem login em um sistema pela primeira vez. Em vez de provisionar contas de usuários antecipadamente, o JIT cria e configura as contas de usuário necessárias de forma dinâmica quando o usuário se autentica. O provisionamento Just-in-Time é um recurso popular com características próprias, como eficiência, ausência de envolvimento administrativo e automação de associações à organização, etc. Agora que você entende o básico do provisionamento Just-in-Time, pode ter várias perguntas enquanto se aprofunda no desenvolvimento de produtos no mundo real. Eu abordarei essas questões, que podem ser controversas e altamente dependentes dos seus casos de negócio específicos.
Você precisa implementar o provisionamento Just-in-Time para seu produto?
Esses casos são comuns ao desenvolver um aplicativo B2B que envolve arquitetura multitenant, SSO empresarial, trabalho com empresas ou que requer recursos de onboarding de equipes. Aqui estão alguns cenários de exemplo que seu cliente pode encontrar.
Onboarding rápido
Você tem um cliente que passa por contratações frequentes ou crescimento rápido e pode usar o provisionamento JIT para configurar rapidamente contas de usuário para novos funcionários. Vamos a um exemplo:
Sarah é uma nova funcionária da empresa SuperFantasy
, que usa Okta
como seu Provedor de Identidade Empresarial. A equipe de RH a adiciona como identidade de negócios [email protected]
no Okta uma única vez. Quando Sarah usa este e-mail para fazer login em um aplicativo de produtividade corporativo chamado Smartworkspace
pela primeira vez, o sistema cria automaticamente uma conta e provisiona o papel certo para ela no workspace da empresa. Dessa forma, nem Sarah nem a equipe de RH da SuperFantasy precisam passar por várias etapas para criar a conta e atribuir o papel.
Fusões, aquisições e trabalhadores temporários
Você tem um cliente que está passando por fusões ou aquisições, o provisionamento JIT pode simplificar o processo de concessão de acesso aos sistemas da empresa adquirente para muitos novos usuários. Vamos a outro exemplo,
Peter trabalha para a MagicTech
, que foi recentemente adquirida pela SuperFantasy
. A MagicTech é uma organização menor que não possui SSO empresarial, mas usa o Smartworkspace
na qual Peter já possui uma conta de negócios.
A equipe de RH pode adicionar Peter no Okta
. Quando Peter fizer login no Smartworkspace pela primeira vez via Okta, o sistema vinculará automaticamente sua conta de negócios existente e concederá o acesso apropriado à SuperFantasy.
Os cenários acima são ideais para a implementação do recurso JIT.
É específico para SAML e SSO Enterprise?
O provisionamento Just-in-Time (JIT) é frequentemente associado ao Single Sign-On (SSO) na autenticação SAML, mas não é exclusivo ao SAML. O JIT também pode ser usado com outros protocolos de autenticação como OAuth 2.0 e OpenID Connect, e nem sempre requer uma configuração SSO Empresarial.
Por exemplo, o provisionamento JIT baseado em e-mail pode agilizar o onboarding de equipes adicionando automaticamente usuários em um workspace com base em seu domínio de e-mail. Isso é particularmente útil para organizações que não têm orçamento e recursos para adquirir e gerenciar o SSO empresarial.
A ideia fundamental por trás do provisionamento JIT é automatizar a criação de contas de usuário ou atualizações quando um usuário tenta acessar um serviço pela primeira vez, independentemente do protocolo específico usado.
Ele se aplica a novos ou a usuários existentes do aplicativo?
Essa é uma pergunta complicada. O provisionamento Just-in-Time (JIT) geralmente se refere à primeira tentativa de acesso a um aplicativo. No entanto, diferentes produtos percebem essa funcionalidade de formas distintas. Alguns utilizam o provisionamento JIT apenas para a criação de identidade e conta, enquanto outros também incluem atualizações de conta Just-in-Time, como reprovisionamento e sincronização de atributos.
Além da criação automática de usuários, o SAML JIT Provisioning permite conceder e revogar associações a grupos como parte do provisionamento. Ele também pode atualizar usuários provisionados para manter seus atributos do Provedor de Serviços (SP) em sincronia com os atributos da loja de usuários do Provedor de Identidade (IDP).
Por exemplo, no Oracle Cloud, o provisionamento Just-in-Time pode ser configurado de várias maneiras.
- Criação Just-in-Time
- Atualização Just-in-Time
Administrando o Oracle Identity Cloud Service: Compreenda o Provisionamento Just-in-Time SAML.
Ao fazer login, o usuário: | Fluxo |
---|---|
Existe e o provisionamento JIT está habilitado. | Fluxo de falha normal do SSO. |
Não existe e a criação JIT está habilitada. | O usuário é criado e preenchido com os atributos de assertiva SAML, conforme mapeado na configuração JIT. |
Existe e a atualização JIT está habilitada. | Os valores dos atributos do usuário são atualizados com os atributos de assertiva SAML, conforme mapeado na configuração JIT. |
Se você quiser considerar o cenário subsequente de login do usuário existente, certifique-se de ter um sistema de provisionamento robusto juntamente com seu sistema JIT. Por exemplo,
- Resolução de conflitos: Seu sistema deve ter uma estratégia para lidar com conflitos caso uma conta já exista com informações diferentes das fornecidas pelo IdP durante o processo JIT. Isso pode exigir controle detalhado das políticas de sua organização e da configuração do IdP.
- Trilhas de auditoria: É importante manter logs de ambas as criações de novas contas e atualizações de contas existentes através dos processos JIT por razões de segurança e conformidade.
- Desempenho: Embora o provisionamento JIT aconteça rapidamente, considere o possível impacto nos tempos de login, especialmente para usuários existentes se você estiver atualizando suas informações em cada login.
- Consistência de dados: Certifique-se de que o processo de provisionamento JIT mantenha a consistência dos dados, especialmente ao atualizar contas de usuário existentes.
Qual é a diferença entre JIT e SCIM?
Além do provisionamento Just-in-Time (JIT), você pode ter ouvido falar do SCIM (System for Cross-domain Identity Management, Sistema para Gerenciamento de Identidade de Domínio Cruzado). O SCIM é um protocolo padrão aberto projetado para simplificar e automatizar o gerenciamento de identidade do usuário entre diferentes sistemas e domínios. É comumente usado em cenários de Sincronização de Diretórios.
A principal diferença entre JIT e SCIM é que o JIT cria contas durante a tentativa de login do usuário, enquanto o SCIM pode provisionar usuários por meio de um processo automatizado offline, independente das tentativas de login do usuário.
Isso significa que o JIT foca no onboarding de novos usuários, enquanto o SCIM foca no gerenciamento do ciclo de vida completo dos usuários.
Além disso, o JIT é muitas vezes uma extensão do SAML e carece de uma implementação padronizada entre os sistemas, enquanto o SCIM é um protocolo bem definido e padronizado (RFC 7644) para gerenciamento de identidade.
Algumas organizações maiores usam SCIM para provisionamento de contas, integrando-o aos seus próprios sistemas. Isso pode ser muito complexo e variar caso a caso. Essas organizações geralmente têm um sistema de provisionamento que envolve processos automatizados e intervenção manual de administradores.
Provisionamento Just-in-Time no Logto
Provisionamento Just-in-Time via SSO e Provisionamento Just-in-Time por domínio de e-mail são o que adotamos no Logto.
No Logto, temos este conjunto de recursos no nível da organização que permite que os usuários se juntem automaticamente à organização e recebam atribuições de papéis se atenderem a critérios específicos.
Implementamos o recurso JIT em seu nível mais escalável e seguro para simplificar e automatizar o processo de provisionamento para desenvolvedores na integração de seus clientes. No entanto, como discutimos anteriormente, como os sistemas de provisionamento podem ser complexos e adaptados às necessidades específicas de seus clientes, você deve aproveitar os recursos JIT pré-construídos do Logto, seu design cuidadoso do sistema e a API de gerenciamento do Logto para construir um sistema de provisionamento robusto.
Vamos dar uma olhada neste diagrama para ver como funciona no Logto,
Provisionamento por SSO Empresarial
Se você tiver SSO Empresarial configurado no Logto, pode selecionar o SSO empresarial da sua organização para habilitar o provisionamento just-in-time.
Novos usuários ou usuários existentes que fizerem login pelo SSO empresarial pela primeira vez ingressarão automaticamente na organização e receberão papéis padrão da organização.
A tabela a seguir lista os fluxos potenciais:
Status do usuário | Descrição do fluxo |
---|---|
Usuário não existe e o JIT está habilitado. | Usuário é criado e ingressa automaticamente na organização correspondente com os papéis apropriados. |
Usuário existe com o mesmo endereço de e-mail verificado que o SSO empresarial, e o JIT está habilitado. | O endereço de e-mail do usuário é automaticamente associado à conta do SSO empresarial, e ele ingressa na organização correspondente com os papéis apropriados. |
Usuário não existe e o JIT não está habilitado. | Fluxo de falha normal do SSO. |
Usu ário existe e o JIT não está habilitado. | Fluxo normal do SSO. |
Provisionamento por domínio de e-mail
Se uma organização não tiver um SSO empresarial dedicado, você pode usar domínios de e-mail para habilitar o provisionamento Just-in-Time. Isso geralmente acontece com pequenas empresas que não têm orçamento para SSO empresarial, mas ainda desejam algum nível de automação de onboarding de membros e gestão de segurança.
Quando os usuários se inscrevem, se seus endereços de e-mail verificados corresponderem aos domínios de e-mail configurados no nível da organização, eles serão provisionados para a(s) organização(ões) apropriada(s) com os papéis correspondentes.
O provisionamento por domínio de e-mail funciona para:
- Autenticação de inscrição por e-mail
- Autenticação de inscrição social
Fluxo de e-mail
Status do usuário | Descrição do fluxo |
---|---|
Usuário não existe e se inscreve com e-mail, e o JIT está habilitado. | O usuário é criado e ingressa automaticamente na organização correspondente com os papéis apropriados. |
Usuário existe com o mesmo endereço de e-mail verificado que os domínios de e-mail provisionados, e o JIT está habilitado. | Fluxo normal de login por e-mail. |
Usuário não existe e se inscreve com e-mail, e o JIT não está habilitado. | Fluxo normal de inscrição por e-mail. |
Usuário existe e faz login com e-mail, e o JIT não está habilitado. | Fluxo normal de login por e-mail. |
Fluxo social
Status do usuário | Descrição do fluxo |
---|---|
Usuário não existe, se inscreve com conta social usando e-mail verificado, e o JIT está habilitado. | O usuário é criado e ingressa automaticamente na organização correspondente com os papéis apropriados. |
Usuário não existe, se inscreve com conta social usando e-mail não verificado ou sem e-mail, e o JIT está habilitado. | Fluxo normal de inscrição social. |
Usuário existe com o mesmo endereço de e-mail verificado que os domínios de e-mail provisionados, faz login por conta social, e o JIT está habilitado. | Fluxo normal de login social. |
Usuário não existe, se inscreve com conta social, e o JIT não está habilitado. | Fluxo normal de inscrição social. |
Usuário existe, faz login com conta social, e o JIT não está habilitado. | Fluxo normal de login social. |
Lidando com potenciais conflitos entre provisionamento por domínio de e-mail e SSO empresarial
Se você inicialmente configurar o provisionamento por domínio de e-mail e posteriormente configurar um SSO Empresarial com o mesmo domínio de e-mail, veja o que acontece:
Quando um usuário insere seu endereço de e-mail, ele será direcionado para o fluxo de SSO, pulando a autenticação de e-mail. Isso significa que o processo JIT não será acionado.
Para resolver isso, exibiremos uma mensagem de aviso durante a configuração. Certifique-se de lidar com esse fluxo selecionando o SSO correto para habilitar o provisionamento just-in-time, sem depender do provisionamento por domínio de e-mail.
Papéis padrão da organização
Ao provisionar usuários, você pode definir seus papéis padrão na organização. A lista de papéis vem do modelo da organização, e você pode escolher um papel ou deixá-lo em branco.
Atualização Just-in-Time do SSO Empresarial
Felizmente, já temos esse recurso embutido no SSO Empresarial! Você pode escolher se as informações do perfil serão sincronizadas com o Logto no primeiro login ou em cada login. Também consideraremos adicionar mais recursos como mapeamento de papéis e organizações, e reprovisionamento no futuro.
Confira isto para saber mais.
O recurso Just-in-Time está disponível imediatamente no Logto. Inscreva-se no Logto hoje e comece a automatizar o onboarding dos membros dos seus clientes.