Hasura
Avant l'intégration, nous devons déployer Casdoor localement.
Ensuite, nous pouvons rapidement mettre en place une page de connexion basée sur Casdoor dans notre propre application avec les étapes suivantes.
Configurer l'application Casdoor
- Créez ou utilisez une application Casdoor existante.
- Ajoutez une URL de redirection :
http://CASDOOR_HOSTNAME/login
- Copiez l'ID client ; nous en aurons besoin dans les étapes suivantes.
Ajoutez un utilisateur dans Casdoor
Maintenant que vous avez l'application, mais pas d'utilisateur. Cela signifie que vous devez créer un utilisateur et lui attribuer un rôle.
Allez à la page "Utilisateurs" et cliquez sur "Ajouter un utilisateur" dans le coin supérieur droit. Cela ouvre une nouvelle page où vous pouvez ajouter le nouvel utilisateur.
Sauvegardez l'utilisateur après avoir ajouté un nom d'utilisateur et ajouté l'organisation Hasura (les autres détails sont optionnels).
Maintenant, vous devez définir un mot de passe pour votre utilisateur, ce que vous pouvez faire en cliquant sur "gérer votre mot de passe".
Choisissez un mot de passe pour votre utilisateur et confirmez-le.
Construisez l'application Hasura
Démarrez Hasura par Docker ou Hasura Cloud.
Maintenant créez une table users
avec les colonnes suivantes :
id
de type Texte (Clé Primaire)username
de type Texte
Référez-vous à l'image ci-dessous pour référence.
L'étape suivante consiste à créer un rôle user
pour l'application. Les utilisateurs devraient être capables de voir seulement leurs enregistrements mais pas ceux des autres.
Configurez le rôle user
comme montré dans l'image ci-dessous. For more information, read about configuring permission rules in Hasura.
De cette manière, les utilisateurs ne peuvent pas lire les enregistrements des autres. Ils ne peuvent accéder qu'à leurs propres informations.
Pour des fins de test, ajoutez un utilisateur fictif. Ceci est pour s'assurer que lorsque vous utilisez le token JWT, vous ne voyez que les détails de votre utilisateur et non ceux des autres utilisateurs.
Maintenant, vous devez définir le JWT_SECRET
dans Hasura.
Configurez Hasura avec Casdoor
Dans cette étape, vous devez ajouter le HASURA_GRAPHQL_JWT_SECRET à Hasura.
Pour ce faire, allez dans le fichier docker-compose.yaml de Hasura et ajoutez le nouveau HASURA_GRAPHQL_JWT_SECRET
comme ci-dessous.
Le HASURA_GRAPHQL_JWT_SECRET
doit être au format suivant. N'oubliez pas de changer <Casdoor endpoint>
par l'URL de votre propre Casdoor (comme 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"}'
Sauvegardez le changement et rechargez le docker.
Récupérez le Token JWT
Puisqu'il n'y a pas d'implémentation client, vous pouvez obtenir votre token d'accès en faisant une requête à l'URL ci-dessous :
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>>
Changez client ID
par l'ID que vous avez copié auparavant et entrez le certificat public de Casdoor, que vous pouvez trouver sur la page Certs de Casdoor.
Ensuite, entrez le nom d'utilisateur et le mot de passe que vous avez créés pour Hasura auparavant.
Cliquez sur "Se connecter"
Retournez à la page Casdoor/Token.
Trouvez le nom d'utilisateur que vous avez entré auparavant, puis cliquez sur "éditer"
Copiez le Token d'Accès
Maintenant, vous pouvez utiliser le token d'accès pour effectuer la requête authentifiée. Hasura a renvoyé l'utilisateur approprié au lieu de renvoyer tous les utilisateurs de la base de données.