Перейти до основного вмісту

Hasura

Перед інтеграцією нам потрібно розгорнути Casdoor локально.

Потім ми можемо швидко реалізувати сторінку входу на базі Casdoor у нашому власному додатку, виконавши наступні кроки.

Налаштування додатку Casdoor

  1. Створіть або використовуйте існуючий додаток Casdoor.
  2. Додайте URL перенаправлення: http://CASDOOR_HOSTNAME/login Налаштування додатку Casdoor
  3. Скопіюйте ідентифікатор клієнта; нам він знадобиться на наступних кроках.

Додайте користувача в Casdoor

Тепер у вас є додаток, але не користувач. Це означає, що вам потрібно створити користувача та призначити йому роль.

Перейдіть на сторінку "Користувачі" та натисніть "Додати користувача" у верхньому правому куті. Це відкриває нову сторінку, де ви можете додати нового користувача.

Зображення, що показує сторінку користувачів

Збережіть користувача після додавання імені користувача та організації Hasura (інші деталі необов'язкові).

Тепер вам потрібно налаштувати пароль для свого користувача, що можна зробити, натиснувши "керувати своїм паролем".

Виберіть пароль для свого користувача та підтвердіть його.

Побудуйте додаток Hasura

Запустіть Hasura за допомогою Docker або Hasura Cloud.

Тепер створіть таблицю users з наступними стовпцями:

  • id типу Text (Primary Key)
  • username типу Text

Дивіться зображення нижче для посилання.

Зображення, що показує, як створити таблицю в Hasura

Наступним кроком є створення ролі user для додатку. Користувачі повинні мати можливість бачити лише свої записи, а не записи інших людей.

Налаштуйте роль user, як показано на зображенні нижче. For more information, read about configuring permission rules in Hasura.

Зображення, що показує, як встановити дозволи в Hasura

Таким чином, користувачі не можуть читати записи інших людей. Вони можуть отримати доступ лише до своїх.

Для тестування додайте фіктивного користувача. Це забезпечує, що коли ви використовуєте JWT токен, ви бачите лише деталі свого користувача, а не деталі інших користувачів.

Зображення, що показує, як додати запис таблиці в Hasura

Тепер вам потрібно встановити JWT_SECRET в Hasura.

Налаштування Hasura з Casdoor

На цьому кроці вам потрібно додати HASURA_GRAPHQL_JWT_SECRET до Hasura.

Для цього перейдіть до файлу Hasura docker-compose.yaml і додайте новий HASURA_GRAPHQL_JWT_SECRET, як показано нижче.

HASURA_GRAPHQL_JWT_SECRET повинен бути у наступному форматі. Не забудьте змінити <Casdoor endpoint> на URL вашого Casdoor (наприклад, 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"}'

Збережіть зміни та перезавантажте docker.

Додайте URL JWT Clerk до Hasura

Отримання JWT токена

Оскільки клієнтська реалізація відсутня, ви можете отримати свій токен доступу, зробивши запит за нижченаведеним URL:

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

Змініть client ID на ID, який ви скопіювали раніше, та введіть публічний сертифікат Casdoor, який ви можете знайти на сторінці сертифікатів Casdoor.

Потім введіть ім'я користувача та пароль, які ви створили для Hasura раніше.

Натисніть "Увійти"

Отримання JWT токена

Поверніться на сторінку Casdoor/Token.

Сторінка токена

Знайдіть ім'я користувача, яке ви ввели раніше, потім натисніть "редагувати"

Скопіюйте токен доступу

Токен доступу

Тепер ви можете використовувати токен доступу для здійснення аутентифікованого запиту. Hasura повернула відповідного користувача, а не всіх користувачів з бази даних.

Зображення, що показує використання токена доступу з Casdoor в Hasura