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
- Crie ou use uma aplicação Casdoor existente.
- Adicione uma URL de redirecionamento:
http://CASDOOR_HOSTNAME/login
- 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.
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.
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. For more information, read about configuring permission rules in 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.
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.
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"
Volte para a página Casdoor/Token.
Encontre o Nome de Usuário que você inseriu antes, então clique em "editar"
Copie o 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.