Hasura
Перед інтеграцією нам потрібно розгорнути Casdoor локально.
Потім ми можемо швидко реалізувати сторінку входу на базі Casdoor у нашому власному додатку, виконавши наступні кроки.
Налаштування додатку Casdoor
- Створіть або використовуйте існуючий додаток Casdoor.
- Додайте URL перенаправлення:
http://CASDOOR_HOSTNAME/login
- Скопіюйте ідентифікатор клієнта; нам він знадобиться на наступних кроках.
Додайте користувача в Casdoor
Тепер у вас є додаток, але не користувач. Це означає, що вам потрібно створити користувача та призначити йому роль.
Перейдіть на сторінку "Користувачі" та натисніть "Додати користувача" у верхньому правому куті. Це відкриває нову сторінку, де ви можете додати нового користувача.
Збережіть користувача після додавання імені користувача та організації Hasura (інші деталі необов'язкові).
Тепер вам потрібно налаштувати пароль для свого користувача, що можна зробити, натиснувши "керувати своїм паролем".
Виберіть пароль для свого користувача та підтвердіть його.
Побудуйте додаток Hasura
Запустіть Hasura за допомогою Docker або Hasura Cloud.
Тепер створіть таблицю users
з наступними стовпцями:
id
типу Text (Primary Key)username
типу Text
Дивіться зображення нижче для посилання.
Наступним кроком є створення ролі user
для додатку. Користувачі повинні мати можливість бачити лише свої записи, а не записи інших людей.
Налаштуйте роль user
, як показано на зображенні нижче. For more information, read about configuring permission rules in Hasura.
Таким чином, користувачі не можуть читати записи інших людей. Вони можуть отримати доступ лише до своїх.
Для тестування додайте фіктивного користувача. Це забезпечує, що коли ви використовуєте JWT токен, ви бачите лише деталі свого користувача, а не деталі інших користувачів.
Тепер вам потрібно встановити 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.
Отримання 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 раніше.
Натисніть "Увійти"
Поверніться на сторінку Casdoor/Token.
Знайдіть ім'я користувача, яке ви ввели раніше, потім натисніть "редагувати"
Скопіюйте токен доступу
Тепер ви можете використовувати токен доступу для здійснення аутентифікованого запиту. Hasura повернула відповідного користувача, а не всіх користувачів з бази даних.