Перейти к основному содержанию

Hasura

Перед интеграцией нам необходимо развернуть Casdoor локально.

Затем мы можем быстро реализовать страницу входа на основе Casdoor в нашем собственном приложении, следуя следующим шагам.

Настройте приложение Casdoor

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

Добавьте пользователя в Casdoor

Теперь у вас есть приложение, но нет пользователя. Это означает, что вам нужно создать пользователя и назначить ему роль.

Перейдите на страницу "Пользователи" и нажмите "Добавить пользователя" в правом верхнем углу. Это откроет новую страницу, где вы можете добавить нового пользователя.

Изображение, показывающее страницу пользователей

Сохраните пользователя после добавления имени пользователя и добавления организации Hasura (другие детали необязательны).

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

Выберите пароль для вашего пользователя и подтвердите его.

Создайте приложение Hasura

Запустите Hasura через Docker или Hasura Cloud.

Теперь создайте таблицу users со следующими столбцами:

  • id типа Text (Первичный ключ)
  • username типа Text

Обратитесь к изображению ниже для справки.

Изображение, показывающее, как создать таблицу в Hasura

Следующий шаг - создать роль user для приложения. Пользователи должны видеть только свои записи, но не записи других людей.

Настройте роль user, как показано на изображении ниже. Для получения дополнительной информации прочтите о настройке правил разрешений в Hasura.

Изображение, показывающее, как установить разрешения в Hasura

Таким образом, пользователи не могут читать записи других людей. Они могут получить доступ только к своим данным.

Для тестирования добавьте тестового пользователя. Это сделано для того, чтобы при использовании JWT токена вы видели только данные вашего пользователя, а не данные других пользователей.

Изображение, показывающее, как добавить запись в таблицу в Hasura

Теперь вам нужно установить JWT_SECRET в Hasura.

Настройте Hasura с Casdoor

На этом шаге вам нужно добавить HASURA_GRAPHQL_JWT_SECRET в Hasura.

Для этого перейдите в файл docker-compose.yaml Hasura и добавьте новый 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