Configurar autorização com Permit.io
Permit.io é uma plataforma de autorização que fornece controle de acesso granular para aplicações. Você pode usar o Logto em conjunto com o Permit.io para gerenciar a autenticação e a autorização dos usuários.
Para entender as principais diferenças entre autenticação e autorização, veja Autenticação vs. autorização.
Este guia mostrará como conectar o Logto ao Permit.io para implementar autorização em sua aplicação.
Pré-requisitos
- Uma conta no Logto Cloud ou um Logto auto-hospedado.
- Uma aplicação Next.js com autenticação Logto já configurada (siga nosso guia Next.js se ainda não tiver feito isso)
- Uma conta no Permit.io. Siga o guia rápido oficial do Permit.io para configurar seu projeto Permit.io antes de prosseguir.
Integração
Instalar o SDK do Permit.io
Adicione o SDK do Permit.io à sua aplicação:
npm install permitio
Criar um projeto no Permit.io
- Cadastre-se para uma conta gratuita em permit.io
- Crie um novo projeto e obtenha sua chave de API
- Adicione a chave de API às variáveis de ambiente:
PERMIT_API_KEY=sua-chave-de-api-do-permit
Configurar o cliente Permit.io
Crie um arquivo para lidar com a integração do Permit.io:
// libraries/permit.js
const { Permit } = require('permitio');
// Inicialize o cliente Permit.io
const permit = new Permit({
pdp: 'https://cloudpdp.api.permit.io',
token: 'sua-chave-de-api-do-permitio',
});
// Sincronize um usuário com o Permit.io
export const syncUserToPermit = async (userId, email, firstName, lastName, role = 'viewer') => {
// Primeiro, sincronize o usuário
await permit.api.syncUser({
key: userId,
email: email || undefined,
first_name: firstName || undefined,
last_name: lastName || undefined,
});
// Em seguida, atribua um papel ao usuário
await permit.api.assignRole({
user: userId,
role: role,
tenant: 'default',
});
return true;
};
Criar um webhook Logto para registro de usuário
O Logto fornece webhooks que podem notificar sua aplicação quando eventos ocorrem. Usaremos o webhook PostRegister
para sincronizar usuários com o Permit.io quando eles se cadastrarem.
Crie um endpoint de webhook em sua aplicação:
// pages/api/webhooks/logto.js
import { syncUserToPermit } from '../../../libraries/permit';
export default async function handler(req, res) {
// Registre o payload do webhook para depuração
console.log('Webhook payload:', req.body);
const { event, user } = req.body;
// Processa eventos de registro de usuário
if (event === 'PostRegister') {
try {
// Determine o papel do usuário (você pode implementar sua própria lógica aqui)
let role = 'viewer'; // Papel padrão
// Sincronize o usuário com o Permit.io
await syncUserToPermit(user.id, user.primaryEmail, user.name, undefined, role);
return res.status(200).json({ success: true });
} catch (error) {
console.error('Erro ao sincronizar usuário:', error);
return res.status(500).json({ error: 'Falha ao sincronizar usuário' });
}
}
return res.status(200).json({ message: 'Evento ignorado' });
}
Configurar o webhook no Logto Console
- Vá para a seção Webhooks no seu Logto Console
- Clique em "Criar Webhook"
- Dê um nome ao seu webhook
- Insira a URL do seu endpoint (por exemplo,
https://seu-app.com/api/webhooks/logto
) - Selecione o evento
PostRegister
- Salve o webhook
Para desenvolvimento local, você pode usar ferramentas como ngrok para expor seu servidor local para a internet.
Testar a sincronização de usuários
Para testar se os usuários estão sendo sincronizados corretamente:
- Crie uma nova conta de usuário em sua aplicação
- Verifique o painel do Permit.io em "Directory" → "Users" para confirmar se o usuário foi sincronizado
- Verifique se o papel correto foi atribuído ao usuário no cadastro

Usar o Permit.io para autorização
Depois que os usuários estiverem sincronizados, você pode usar o Permit.io para checar permissões:
// Exemplo de verificação de permissão
const isPermitted = await permit.check(userId, 'view', 'reports');
if (isPermitted) {
// Usuário tem permissão para visualizar recursos
// Exiba a interface de recursos
} else {
// Usuário não tem permissão para visualizar recursos
// Exiba uma mensagem de acesso negado
}
Conclusão
Você conectou com sucesso o Logto ao Permit.io para sincronizar usuários automaticamente e implementar autorização em sua aplicação. Com essa integração:
- Usuários se autenticam pelo Logto
- Novos usuários são automaticamente sincronizados com o Permit.io via webhooks
- Você pode usar o Permit.io para checar permissões e implementar controle de acesso
Essa configuração fornece uma base sólida para implementar padrões de autorização mais avançados conforme sua aplicação cresce.
Para casos de uso de autorização mais avançados, explore a documentação do Permit.io sobre criação de políticas, aplicação de permissões e implementação de controle de acesso baseado em papel.