Pular para o conteúdo principal

Hasura

Antes da integração, precisamos implantar o Casdoor localmente.

Então podemos implementar rapidamente uma página de login baseada em Casdoor em nosso próprio aplicativo com os seguintes passos.

Configurar aplicação Casdoor

  1. Crie ou use uma aplicação Casdoor existente.
  2. Adicione uma URL de redirecionamento: http://CASDOOR_HOSTNAME/login Configuração da Aplicação Casdoor
  3. Copie o ID do cliente; precisaremos dele nos passos seguintes.

Adicione um usuário no Casdoor

Agora que você tem o aplicativo, mas não um usuário. Isso significa que você precisa criar um usuário e atribuir o papel.

Vá para a página "Usuários" e clique em "Adicionar usuário" no canto superior direito. Isso abre uma nova página onde você pode adicionar o novo usuário.

Imagem mostrando a página de usuários

Salve o usuário após adicionar um nome de usuário e adicionar a organização Hasura (outros detalhes são opcionais).

Agora você precisa configurar uma senha para o seu usuário, o que pode ser feito clicando em "gerenciar sua senha".

Escolha uma senha para o seu usuário e confirme-a.

Construa o Aplicativo Hasura

Inicie o Hasura pelo Docker ou Hasura Cloud.

Agora crie uma tabela users com as seguintes colunas:

  • id do tipo Texto (Chave Primária)
  • username do tipo Texto

Consulte a imagem abaixo para referência.

Imagem mostrando como criar uma tabela no Hasura

O próximo passo é criar um papel user para o aplicativo. Os usuários devem poder ver apenas seus próprios registros, mas não os registros de outras pessoas.

Configure o papel user conforme mostrado na imagem abaixo. Para mais informações, leia sobre configurar regras de permissão no Hasura.

Imagem mostrando como configurar permissões no Hasura

Dessa forma, os usuários não podem ler os registros de outras pessoas. Eles só podem acessar os próprios.

Para fins de teste, adicione um usuário fictício. Isso é para garantir que, quando você usa o token JWT, você só veja os detalhes do seu usuário e não os detalhes de outros usuários.

Imagem mostrando como adicionar um registro de tabela no Hasura

Agora você precisa definir o JWT_SECRET no Hasura.

Configure o Hasura com o Casdoor

Neste passo, você precisa adicionar o HASURA_GRAPHQL_JWT_SECRET ao Hasura.

Para fazer isso, vá para o docker-compose.yaml do Hasura e adicione o novo HASURA_GRAPHQL_JWT_SECRET como abaixo.

O HASURA_GRAPHQL_JWT_SECRET deve estar no seguinte formato. Lembre-se de mudar <endpoint do Casdoor> para a URL do seu próprio Casdoor (como https://door.casdoor.com)

HASURA_GRAPHQL_JWT_SECRET: '{"claims_map": {
"x-hasura-allowed-roles": {"path": "$.roles"},
"x-hasura-default-role": {"path": "$.roles[0]"},
"x-hasura-user-id": {"path": "$.id"}
},"jwk_url":"<Casdoor endpoint>/.well-known/jwks"}'

Salve a alteração e recarregue o docker.

Adicione a URL do JWT do Clerk ao Hasura

Recupere o Token JWT

Como não há implementação do cliente, você pode obter seu token de acesso fazendo uma solicitação pela URL abaixo:

http://localhost:8000/login/oauth/authorize?client_id=<client ID>&response_type=code&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2Flogin&scope=read&state=app-built-in<public certificate>>

Mude o client ID para o ID que você copiou antes e insira o certificado público do Casdoor, que você pode encontrar na página de Certificados do Casdoor.

Então insira o nome de usuário e senha que você criou para o Hasura antes.

Clique em "Entrar"

Recupere o Token JWT

Volte para a página Casdoor/Token.

Página de Token

Encontre o Nome de Usuário que você inseriu antes, então clique em "editar"

Copie o Token de Acesso

Token de Acesso

Agora você pode usar o token de acesso para fazer a solicitação autenticada. O Hasura retornou o usuário apropriado em vez de retornar todos os usuários do banco de dados.

Imagem mostrando o token de acesso do Casdoor sendo usado no Hasura