Access
O Access põe um portão na frente de um caminho do seu site, como /admin*, um site de staging ou um preview, sem nenhuma mudança no app. O portão pede uma de duas coisas:
- Uma senha que você passa para quem precisa entrar.
- Um e-mail da sua lista. O visitante digita e recebe um link de entrada que vale uma vez, por 15 minutos.
Quem entra ganha um cookie assinado e navega pelo tempo de sessão que você definir. Com o link por e-mail, o seu app recebe num cabeçalho o e-mail de quem entrou, então sabe quem está ali. O portão segura também no modo observar, porque é uma tranca que você pôs e não um palpite, então um site de staging fica privado desde o primeiro dia.
O Access faz parte do plano Pro.
Como ligar
Seção intitulada “Como ligar”Ele roda no conector: o proxy do Qlyne, o conector hospedado ou o Worker da Cloudflare. Com o conector instalado:
- No painel, abra o seu site e vá em Access, Configuração.
- Clique em Adicionar portão. Dê um nome, escolha como as pessoas entram, acrescente as rotas, depois os e-mails ou a senha, e o tempo de sessão.
- Pronto fecha a janela. Salve a página: o portão só vale depois disso, e o conector o recebe em até um minuto.
- Abra uma das rotas numa janela anônima. Deve aparecer a página “Acesso restrito”.
No proxy e no hospedado, todo pedido passa pelo conector, então qualquer caminho pode ter portão. Na Cloudflare, as rotas do Worker precisam cobrir os caminhos do portão. O limite de tentativas de senha usa o limite de requisições da Cloudflare, que exige o conector publicado com o Wrangler e o wrangler.toml do painel (veja Instale o conector). Na instalação pelo painel da Cloudflare o portão funciona, mas as tentativas não são limitadas.
Configuração
Seção intitulada “Configuração”Cada portão tem:
- Nome: aparece no painel e no e-mail de entrada. Cada nome é usado uma vez por site.
- Como as pessoas entram: Link por e-mail ou Senha.
- Rotas: os caminhos que o portão tranca, começando com
/.*casa com o resto, então/admin*cobre/admin,/admin/e tudo abaixo, imagens e scripts incluídos./*tranca o site inteiro. Até 50 rotas por portão. - Quem pode entrar (link por e-mail): endereços, ou
@suaempresa.com.brpara todo mundo com endereço de lá. Até 200 por portão. - Senha: pelo menos 8 caracteres. O Qlyne guarda só um hash dela, então ninguém consegue lê-la de volta. Com uma senha já definida, o campo mostra “Definida, digite para trocar”; deixe vazio para manter a atual.
- Fica logado por: 1 hora, 12 horas (o padrão), 1 dia ou 1 semana.
Um site pode ter até 10 portões. Cada portão tem a sua sessão: entrar em /staging não abre /admin. Se dois portões cobrem o mesmo caminho, vale o primeiro da lista.
O Access não tem níveis de proteção: o que trancar é uma escolha sobre o seu site, não uma intensidade. Os portões também fazem parte das regras como código e do servidor MCP, e nenhum dos dois devolve a senha.
O que o seu app recebe
Seção intitulada “O que o seu app recebe”Quem entrou pelo link por e-mail chega ao seu app com o cabeçalho Qlyne-Gate-User e o seu e-mail, mesmo com os outros sinais desligados. O portão por senha não manda e-mail, porque todo mundo usa a mesma senha. O conector remove qualquer cabeçalho Qlyne-* que o visitante mande, então o valor não pode ser forjado.
// Nodeconst who = req.headers['qlyne-gate-user'] || null;// Laravel$who = $request->header('Qlyne-Gate-User');O que o visitante vê
Seção intitulada “O que o visitante vê”- Um navegador sem sessão:
401com a página “Acesso restrito”. O portão por senha mostra “Digite a senha para continuar.” e o botão Entrar. O portão por e-mail mostra “Digite seu e-mail para receber um link de acesso.” e o botão Enviar link. - Depois de pedir o link: “Confira seu e-mail”. A página diz o mesmo para todo mundo, esteja na lista ou não, então nunca revela quem tem acesso. O e-mail chega com o assunto “Access link: ” e o endereço do seu site, e um botão Sign in.
- A senha certa ou um link válido: o visitante cai na página que pediu, já dentro da sessão.
- Uma senha errada: a mesma página com “Senha errada.”. Mais de 10 tentativas num minuto do mesmo IP recebem
429e “Muitas tentativas. Espere um minuto e tente de novo.” - Um link já usado, ou com mais de 15 minutos: “Link vencido”, com o convite para pedir outro.
- Uma chamada de API ou um script sem sessão:
401com{"code": "GATE_REQUIRED"}. - Um IP confiável das listas de IP pula o portão junto com todas as outras regras.
As páginas do portão seguem o idioma do navegador do visitante, inglês ou português.
Limites
Seção intitulada “Limites”- O e-mail de entrada sai em inglês por enquanto, qualquer que seja o idioma do visitante.
- Trocar a senha ou tirar um endereço da lista não desconecta quem já entrou. A sessão dessa pessoa dura até vencer. Renomear o portão desconecta todo mundo dele de uma vez.
- A sessão tem duração fixa, contada a partir do momento em que a pessoa entrou. Não há saída por inatividade.
- O portão não tem verificação em duas etapas nem login único (SSO). Não há portão por endereço IP; ponha o endereço como confiável nas listas de IP.
- Os Relatórios do Access contam quantas pessoas o portão parou e quantas entraram, sem dizer quem entrou. O e-mail vai só para o seu app, em
Qlyne-Gate-User. - As tentativas de senha são contadas por IP. Com mais de um proxy, cada um conta a sua parte.
Perguntas frequentes
Seção intitulada “Perguntas frequentes”Substitui o login do meu admin?
Seção intitulada “Substitui o login do meu admin?”Não. Mantenha o login do seu app. O portão fica na frente dele: quem não tem a senha ou não está na lista nem chega à página de login, então robô não consegue tentar senhas nela. Com o link por e-mail, o seu app ainda pode ler Qlyne-Gate-User para saber quem passou pelo portão.
E a equipe toda?
Seção intitulada “E a equipe toda?”Use um portão por link por e-mail com @suaempresa.com.br em Quem pode entrar: todo mundo com endereço de lá entra com o próprio link, e o seu app vê quem é cada um. Acrescente gente de fora um endereço por vez, até 200 por portão. Senha compartilhada também funciona, mas quando alguém sai você precisa trocá-la e renomear o portão para desconectar todo mundo.
Dá para liberar o meu IP?
Seção intitulada “Dá para liberar o meu IP?”Dá, pelo firewall. Ponha o seu endereço como confiável nas listas de IP: ele pula o portão e todas as outras regras, o desafio e os limites de requisições incluídos. Use para o escritório ou para um monitor de disponibilidade. Os outros continuam encontrando o portão.
A sessão vale em todos os navegadores?
Seção intitulada “A sessão vale em todos os navegadores?”Não. A sessão mora num cookie do navegador em que você entrou. Outro navegador, o celular ou uma janela anônima pedem de novo. O cookie não está preso ao seu IP, então trocar de rede mantém você dentro até a sessão acabar.
Tem no Free?
Seção intitulada “Tem no Free?”Não, o Access faz parte do Pro. Toda conta nova ganha 7 dias de Pro, sem cartão. No Free, os portões ficam salvos no painel, mas o conector não os aplica, então os caminhos que eles trancavam ficam abertos para todo mundo. Se um site voltar para o Free, confira o que estava atrás de um portão. Veja Planos.
Solução de problemas
Seção intitulada “Solução de problemas”O e-mail de entrada não chega
Seção intitulada “O e-mail de entrada não chega”A página diz “Confira seu e-mail” para todo mundo, então confira a lista primeiro:
- O endereço está em Quem pode entrar exatamente como foi digitado, ou o domínio está lá com
@. - A página foi salva depois do Pronto, e o site está no Pro.
- Um endereço recebe até 5 links em 15 minutos. Os pedidos seguintes não mandam e-mail; espere e peça de novo.
- O e-mail vem do Qlyne, em inglês, com o assunto “Access link: ” e o endereço do seu site. Olhe a caixa de spam.
Entro e o portão pede de novo
Seção intitulada “Entro e o portão pede de novo”O navegador não está guardando o cookie do portão. Três causas, da mais comum para a menos:
- O site é servido em HTTP puro. O cookie só é guardado em HTTPS. Sirva o site em HTTPS.
- O proxy fica atrás do seu servidor web, que não manda
X-Forwarded-Proto. Aí o link de entrada começa comhttp://. Acrescente o cabeçalho como no guia do proxy. - O navegador bloqueia cookies do seu site. Libere, ou tente outro navegador.
Renomear um portão ou trocar o segredo do conector também pede uma nova entrada a todo mundo.
A minha API parou atrás do portão
Seção intitulada “A minha API parou atrás do portão”Chamadas sem sessão recebem 401 com {"code": "GATE_REQUIRED"}, e o formulário só funciona num navegador. Uma página dentro do portão que chama a própria API com fetch manda o cookie, então continua funcionando. Para outros chamadores, como um app de celular, um webhook ou um servidor:
- Liste em Rotas só os caminhos a trancar, e deixe a API de fora. Um portão em
/*cobre todos os caminhos. - Ou ponha o IP de quem chama como confiável nas listas de IP.