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
- Crear o usar una aplicación Casdoor existente.
- Añade una URL de redirección:
http://CASDOOR_HOSTNAME/login
- 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.
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.
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. For more information, read about configuring permission rules in 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.
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.
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"
Vuelve a la página Casdoor/Token.
Encuentra el Nombre de Usuario que ingresaste antes, luego haz clic en "editar"
Copia el 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.