Saltar al contenido principal

Hasura

Antes de la integración, necesitamos desplegar Casdoor localmente.

Luego podemos implementar rápidamente una página de inicio de sesión basada en Casdoor en nuestra propia aplicación con los siguientes pasos.

Configurar la aplicación Casdoor

  1. Crear o usar una aplicación Casdoor existente.
  2. Añade una URL de redirección: http://CASDOOR_HOSTNAME/login Configuración de la Aplicación Casdoor
  3. Copia el ID del cliente; lo necesitaremos en los siguientes pasos.

Añade un usuario en Casdoor

Ahora que tienes la aplicación, pero no un usuario. Eso significa que necesitas crear un usuario y asignarle un rol.

Ve a la página "Usuarios" y haz clic en "Añadir usuario" en la esquina superior derecha. Eso abre una nueva página donde puedes añadir el nuevo usuario.

Imagen mostrando la página de usuarios

Guarda el usuario después de añadir un nombre de usuario y añadir la organización Hasura (otros detalles son opcionales).

Ahora necesitas configurar una contraseña para tu usuario, lo cual puedes hacer haciendo clic en "gestionar tu contraseña".

Elige una contraseña para tu usuario y confírmala.

Construir la Aplicación Hasura

Inicia Hasura por Docker o Hasura Cloud.

Ahora crea una tabla users con las siguientes columnas:

  • id de tipo Texto (Clave Primaria)
  • username de tipo Texto

Refiérete a la imagen a continuación para referencia.

Imagen mostrando cómo crear una tabla en Hasura

El siguiente paso es crear un rol user para la aplicación. Los usuarios deberían poder ver solo sus registros pero no los registros de otras personas.

Configura el rol user como se muestra en la imagen a continuación. Para más información, lee acerca de configurar reglas de permisos en Hasura.

Imagen mostrando cómo configurar permisos en Hasura

De esta manera, los usuarios no pueden leer los registros de otras personas. Solo pueden acceder a los suyos.

Para propósitos de prueba, añade un usuario ficticio. Esto es para asegurar que cuando uses el token JWT, solo veas los detalles de tu usuario y no los detalles de otros usuarios.

Imagen mostrando cómo añadir un registro de tabla en Hasura

Ahora necesitas configurar el JWT_SECRET en Hasura.

Configura Hasura con Casdoor

En este paso, necesitas añadir el HASURA_GRAPHQL_JWT_SECRET a Hasura.

Para hacerlo, ve al docker-compose.yaml de Hasura y luego añade el nuevo HASURA_GRAPHQL_JWT_SECRET como se muestra a continuación.

El HASURA_GRAPHQL_JWT_SECRET debe estar en el siguiente formato. Recuerda cambiar <Casdoor endpoint> por la URL de tu propio 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"}'

Guarda el cambio y recarga el docker.

Añade la URL del JWT de Clerk a Hasura

Recupera el Token JWT

Dado que no hay una implementación del cliente, puedes obtener tu token de acceso haciendo una solicitud por la URL a continuación:

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>>

Cambia client ID por el ID que copiaste antes e ingresa el certificado público de Casdoor, el cual puedes encontrar en la página de Certificados de Casdoor.

Luego ingresa el nombre de usuario y la contraseña que creaste para Hasura antes.

Haz clic en "Iniciar sesión"

Recupera el Token JWT

Vuelve a la página Casdoor/Token.

Página de Token

Encuentra el Nombre de Usuario que ingresaste antes, luego haz clic en "editar"

Copia el Token de Acceso

Token de Acceso

Ahora puedes usar el token de acceso para hacer la solicitud autenticada. Hasura devolvió el usuario apropiado en lugar de devolver todos los usuarios de la base de datos.

Imagen mostrando el token de acceso de Casdoor siendo usado en Hasura