- Data Hackers Newsletter
- Posts
- Streamlit Authenticator: adicione autenticação às suas aplicações Streamlit
Streamlit Authenticator: adicione autenticação às suas aplicações Streamlit
Aprenda a implementar sistemas de login e autenticação em seus apps Streamlit usando a biblioteca Streamlit-Authenticator.
Para quem deseja fortalecer a segurança de suas aplicações Streamlit, o Streamlit Authenticator é a solução ideal. Esta biblioteca possui recursos que facilitam a implementação de sistemas de login e autenticação, permitindo que apenas usuários autorizados tenham acesso a certas funcionalidades do app.
Neste post, exploraremos como configurar o Streamlit Authenticator, desde a instalação do pacote até a criação de credenciais, além de abordar a gestão de privilégios de usuário e as vantagens dessa abordagem para o desenvolvimento de aplicações mais seguras e personalizadas.
O que é o Streamlit Authenticator?
O Streamlit Authenticator é um pacote projetado para adicionar recursos de autenticação a aplicativos desenvolvidos com Streamlit. Ele permite que os desenvolvedores implementem um sistema de login para usuários, oferecendo diferentes níveis de privilégio e segurança conforme as necessidades de cada aplicação.
Com funcionalidades como a criação de formulários de login e o hash de senhas, o Streamlit Authenticator facilita a implementação de um sistema onde apenas usuários autorizados podem acessar partes específicas do aplicativo. Além disso, possibilita a gestão de privilégios de usuários, permitindo acessos distintos de acordo com as permissões estabelecidas.
Origem do Streamlit Authenticator
A ideia de desenvolver o Streamlit Authenticator surgiu a partir da demanda de um cliente por funcionalidades robustas de autenticação e controle de acesso em um projeto específico. Posteriormente, ele se tornou uma solução para tornar aplicativos Streamlit mais seguros, atendendo a necessidades corporativas e outras aplicações que requerem controle rigoroso sobre quem pode acessar o que.

O Streamlit Authenticator permite maior segurança no acesso ao Streamlit
Como funciona o Streamlit Authenticator?
O Streamlit Authenticator tem se mostrado um componente essencial para autenticação segura de usuários. Abaixo estão os principais passos para operá-lo:
Instalação: Instale o pacote usando o comando
pip install streamlit-authenticator
e importe-o no seu script Python.Criação de Credenciais: Defina as credenciais dos usuários (nomes de usuário, e-mails e senhas) em um arquivo YAML, assegurando que as senhas sejam armazenadas de maneira segura, utilizando hashing.
Hash de Senhas: O pacote fornece um módulo (Hasher) para converter senhas feitas com texto simples em senhas hash, que serão armazenadas no arquivo YAML.
Criação do Widget de Login: Com um objeto autenticador, configure o widget de login. A autenticação dos usuários é gerida através deste widget, onde o status da autenticação e o nome do usuário são retornados.
Autenticação de Usuários: Após a criação do widget, o sistema verifica as credenciais fornecidas e autentica o acesso, exibindo mensagens apropriadas conforme o status da autenticação.
Implementação de Privilégios de Usuário: Com base no nome do usuário autenticado, redirecione os usuários para diferentes seções da aplicação, proporcionando uma experiência personalizada.
Esse processo não apenas implementa a autenticação, mas também permite gerenciar diferentes níveis de privilégio conforme for necessário.
Como implementar autenticação no Streamlit?
Implementar autenticação nas aplicações Streamlit é um passo essencial para garantir a segurança e o controle de acesso. A biblioteca Streamlit-Authenticator torna esse processo mais simples. Aqui estão os passos para implementação:
Instalação do Streamlit-Authenticator: Instale o pacote com:
pip install streamlit-authenticator
Importação do Componente: No seu script Python, importe o componente:
import streamlit_authenticator as stauth
Criação do Arquivo YAML para Credenciais: Defina as credenciais dos usuários e configurações de cookies em um arquivo YAML. Exemplo:
credentials: usernames: jsmith: email: [email protected] name: John Smith password: abc # Substitua pela senha hash rbriggs: email: [email protected] name: Rebecca Briggs password: def # Substitua pela senha hash cookie: expiry_days: 30 key: random_signature_key # Deve ser uma string name: random_cookie_name preauthorized: emails: - [email protected]
Hash das Senhas: Use o módulo Hasher para gerar senhas hash:
hashed_passwords = stauth.Hasher(['abc', 'def']).generate()
Lembre-se de substituir as senhas elaboradas com texto puro no arquivo YAML.
Importação do Arquivo YAML: Importe o arquivo no seu script:
import yaml from yaml.loader import SafeLoader with open('../config.yaml') as file: config = yaml.load(file, Loader=SafeLoader)
Criação do Objeto Autenticador: Crie um objeto autenticador usando as configurações do YAML:
authenticator = stauth.Authenticate( config['credentials'], config['cookie']['name'], config['cookie']['key'], config['cookie']['expiry_days'], config['preauthorized'] )
Renderização do Widget de Login: Renderize o widget e capture os valores de autenticação:
name, authentication_status, username = authenticator.login('Login', 'main')
Lógica de Autenticação: Implemente a lógica para gerenciar diferentes estados de autenticação:
if authentication_status: authenticator.logout('Logout', 'main') st.write(f'Bem-vindo *{name}*') elif authentication_status == False: st.error('Usuário/senha está incorreto') elif authentication_status == None: st.warning('Por favor, insira seu usuário e senha')
Implementação de Privilégios do Usuário: Personalize a experiência do usuário com base no nome do usuário autenticado:
if username == 'jsmith': st.title('Aplicação 1') elif username == 'rbriggs': st.title('Aplicação 2')
Quais as Vantagens do Streamlit Authenticator?
As vantagens do Streamlit Authenticator são diversas e fazem desta biblioteca uma escolha ideal para os desenvolvedores que desejam implementar autenticação. Confira alguns benefícios:
Autenticação Segura: Valida credenciais de usuários, garantindo que apenas usuários autorizados tenham acesso.
Gestão de Níveis de Privilégio: Oferece suporte para diferentes níveis de privilégio dos usuários, permitindo personalizar a experiência de acesso.
Facilidade de Implementação: Instalação e configuração simples, economizando tempo e esforço no desenvolvimento.
Hashing de Senhas: Utiliza técnicas de hashing de senhas, aumentando a segurança ao armazenar credenciais.
Experiência do Usuário: Proporciona uma experiência de login amigável, com feedback claro em caso de erros de autenticação.
Flexibilidade na Configuração: Permite definir listas pré-autorizadas e outros parâmetros de configuração para atender a requisitos específicos.
Gerenciamento de Sessões: Mantém os usuários logados por um período definido, melhorando a experiência geral.

Com o Streamlit Authenticator, é possível limitar o acesso a algumas funcionalidades a certos usuários
Como Garantir a Segurança na Sua Aplicação Streamlit?
Para garantir a segurança na sua aplicação Streamlit, siga estas práticas recomendadas:
Autenticação: Utilize autenticação através do GitHub para implantar ou administrar sua aplicação.
Gerenciamento de Permissões: Verifique se as permissões atribuídas no GitHub estão adequadas.
Infraestrutura Segura: Streamlit utiliza data centers seguros monitorados para garantir conformidade.
Exclusão de Dados: Tenha a opção de excluir aplicações e contas conforme for necessário.
Segurança de Rede e Aplicação: Utilize uma nuvem privada virtual (VPC) com controle de acesso via firewalls.
Criptografia: Todas as aplicações são servidas através de HTTPS, com criptografia forte.
Gerenciamento de Vulnerabilidades: Mantenha sistemas atualizados e monitore vulnerabilidades.
Resposta a Incidentes: Siga protocolos internos para detectar e responder a eventos de segurança.
Essas práticas ajudam a criar uma aplicação mais segura no Streamlit e a proteger os dados dos usuários.
Vale a pena utilizar o Streamlit Authenticator?
Vale a pena considerar a implementação de autenticação em suas aplicações Streamlit com o Streamlit Authenticator. Com recursos que facilitam a gestão de usuários e seus privilégios, essa biblioteca não só fortalece a segurança da sua aplicação, mas também melhora a experiência do usuário ao garantir um acesso controlado e personalizado.
Com as diretrizes e passos detalhados neste post, você está preparado para adicionar uma camada extra de proteção às suas aplicações. Agora, é hora de colocar em prática e aproveitar os benefícios que um sistema de autenticação pode proporcionar.