Pular para o conteúdo principal
O vsql_oauth2 permite que uma conta faça login com um JWT em vez de uma senha. A extensão verifica a assinatura do token, com chaves obtidas de um endpoint JWKS ou com uma única chave pública estática, verifica se o token não expirou e mapeia uma claim dentro dele para uma conta do VillageSQL. O seu provedor de identidade continua sendo o único lugar que emite credenciais.
Esta extensão usa uma capability Preview, então vsql_allow_preview_extensions precisa estar ON. Inicie o servidor com --vsql_allow_preview_extensions=ON ou execute SET PERSIST vsql_allow_preview_extensions = ON. Caso contrário, o INSTALL EXTENSION é recusado.

Instalar

O vsql_oauth2.veb já está no diretório lib/veb/ do servidor se você instalou o VillageSQL com o script de instalação, a imagem Docker ou um tarball de release. Instale-o no servidor com uma única instrução:
Confirme que ele está lá:
Para compilá-lo você mesmo, siga as instruções de compilação no repositório.

O que ela adiciona

Ela adiciona um plugin de autenticação, e não funções SQL. Nomeie o plugin ao criar a conta, e essa conta passa a se autenticar apresentando um token:
A sessão roda como a conta que o token nomeia, e não como a conta que se conectou. A claim em username_claim, sub por padrão, fornece esse nome. Quando o seu valor é analyst, a instrução acima é tudo de que você precisa. Quando ela nomeia outra coisa, como um endereço de e-mail, crie essa conta também e deixe a conta que se conecta atuar como proxy dela:
ACCOUNT LOCK impede que alguém faça login como alice@example.com diretamente, e a concessão de proxy continua funcionando para uma conta bloqueada. Um servidor que executa o validate_password se recusa a criar uma conta sem senha, bloqueada ou não, respondendo ERROR 1819 (HY000): Your password does not satisfy the current policy requirements. Onde isso se aplica, dê à conta uma senha que ninguém possui. Sem a concessão de proxy, o login é recusado com ERROR 6126 (HY000): Access denied for user 'oidc_user'@'localhost', missing proxy privilege. Todo o resto é configuração. Assinaturas RSA são aceitas como RS256, RS384 e RS512, e ECDSA como ES256, ES384 e ES512.
auto_create e auto_grant vêm desativados por padrão, e esse padrão é o seguro. Ativá-los significa que o seu provedor de identidade decide quem tem uma conta aqui e o que ela pode acessar, então restrinja roles_filter antes de fazê-lo. auto_grant = SYNC vai além: ele também revoga qualquer role que a conta possui e que o token não reivindica, exceto as roles definidas como DEFAULT ROLE da conta por um operador.
Uma configuração gravada com SET PERSIST sobrevive a uma reinicialização, mas UNINSTALL EXTENSION a apaga. Após desinstalar e reinstalar, toda configuração volta ao seu padrão, e nenhuma reinicialização traz o valor antigo de volta.

Variáveis de status

Veja também