- Go 93.2%
- HTML 6.8%
apelido's grants have a scope now. The access code asks for the app's own protocol, the cofre — a request to enter goes by it — and whatever else the app says it publishes in (LoadConfigCom, ConfigLocal.OutrosProtocolos); the Crachá gives one grant for each. An account holds with all of them, or with the grant over everything of who gave it before there were scopes, and the sign-up concludes with the last one. An app that names no Ambitos asks for the total, as before. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> |
||
|---|---|---|
| auth | ||
| cadeia | ||
| config | ||
| credentials | ||
| templates | ||
| .gitignore | ||
| CLAUDE.md | ||
| go.mod | ||
| lab_test.go | ||
| LICENSE | ||
| README.md | ||
iu
A base das aplicações web sobre o apelido e o brisa: ligar-se à rede, saber quem tem conta, e as páginas de entrar, cadastrar e convidar. A aplicação escreve só o seu protocolo e as suas páginas.
Vem do iu do projeto setembro (sobre o handles e o breeze), adaptado ao protocolo de hoje.
O que dá a uma aplicação
| pacote | faz |
|---|---|
cadeia |
segue a sub-cadeia do apelido (só ações aceites) e entrega à aplicação as instruções do seu protocolo, dentro da Void; publica em nome de um handle, assinando como procuradora |
auth |
quem tem conta: registros e procurações vistos na rede, os pedidos de entrada, sessões, convites |
credentials |
as páginas de entrar, primeiro acesso, código de acesso, convite, e o link de aceite que o Crachá chama |
templates |
os modelos dessas páginas, para a aplicação estender |
config |
lê o JSON da aplicação, a chave (.pem, criada se não existir), e monta tudo |
Como uma pessoa entra numa aplicação
A identidade é a @ do apelido, e não há senha na aplicação: quem prova que a @ é da pessoa é o Crachá, que guarda a chave do dono.
A primeira vez. A pessoa escreve a @; a aplicação mostra um código de acesso
(apelido.AccessCode: a chave da aplicação e um código sorteado). No Crachá, em dar acesso a um
app pelo código, a pessoa cola-o (com um Crachá hospedado configurado, vai lá num clique): o
Crachá dá procuração à aplicação com a impressão digital do código. Só a chave do dono assina
procurações, e a aplicação, ao ver essa procuração passar na sub-cadeia, sabe que a @ é da pessoa e
deixa entrar o navegador que pediu. Ter conta é ter a procuração em vigor.
Das vezes seguintes. A pessoa escreve a @ e a aplicação publica, em nome dela, um pedido de
entrada (apelido/entrar): uma entrega do cofre selada para a chave do dono, com um link dentro.
A página mostra um número de dois dígitos. O Crachá, que segue a cadeia, mostra o pedido; a pessoa
escreve o número, e o Crachá chama o link por HTTPS. Só a chave do dono abre o pedido, por isso
chamar o link é a prova; e só uma aplicação com procuração consegue pedir, porque o apelido recusa a
Void de quem não fala pela @. O pedido vale 60 segundos (entrar.Window).
O número impede que a pessoa aceite às cegas um pedido feito por outro com a @ dela. Não impede um site falso que comece um pedido verdadeiro e lhe mostre o número.
Tirar o acesso no Crachá tira a entrada na aplicação, e os pedidos deixam de poder ser feitos.
Onde está o Crachá. O formulário de entrada tem um campo para a pessoa dizer onde está o Crachá
dela: o endereço de um hospedado (a aplicação propõe o da sua configuração, cracha), ou vazio se é o
de desktop. O navegador lembra-se (um cookie); não vai para a cadeia. Com endereço, o primeiro acesso
leva o código até lá e a página de espera tem um botão para o abrir; sem ele, a pessoa cola o código e
abre o Crachá no computador.
Validar o protocolo da aplicação
A aplicação valida as suas próprias regras, no seu processo, sobre o que cadeia.Segue entrega:
a assinatura e o direito de quem assina falar pela @ já foram conferidos pelo apelido. No fim de
cada bloco vem uma marca (FimDeBloco) — o sítio de incorporar o que se validou. Recomeco pede
para voltar ao estado inicial: a rede desfez blocos, e o que continua válido vem de novo.
Testes
go test ./...
IU_LAB=lab.aslivres.social IU_LAB_GATEWAY_TOKEN=<token> go test -run Lab -v . # contra o laboratório