Cognito & CASL - управление пользователями

RedDeveloper
11.04.2023 11:34
Cognito & CASL - управление пользователями

Cognito & CASL - Управление пользователями

В настоящее время очень часто возникают вопросы об управлении пользователями и разрешениях доступа к каждой функции, когда вы начинаете создавать новое приложение. Думая об этом, я создал эту публикацию, чтобы помочь вам ответить на ваши вопросы и разъяснить использование Cognito и CASL, интегрированных в ваши проекты.

Несмотря на всю сложность, принцип всего заключается в том, чтобы понять, какую роль играет каждый маленький кусочек этой головоломки в нашей архитектуре. В качестве вспомогательного материала я создал диаграмму, чтобы наглядно показать, где находятся задействованные ресурсы. См. диаграмму:

Архитектура AWS из публикации
Архитектура AWS из публикации

Почему стоит выбрать Cognito?

Этот ресурс AWS настоятельно рекомендуется для интеграции в веб- и мобильные приложения, обеспечивая безопасное хранение и управление пользователями. Кроме того, он готов к интеграции с другими облачными сервисами или другими провайдерами федерации идентификации, обеспечивая централизованное и надежное управление доступом.

Одним из нескольких вариантов использования Cognito является его интеграция с API Gateway, что позволяет создать уровень авторизации в момент запроса к бэкенду, без необходимости обрабатывать разрешения на доступ к API в Lambda-функциях, например, декодируя отправленный JWT-токен.

Этот инструмент, помимо высокой мощности, предлагает несколько функций безопасности, таких как проверка электронной почты, отправка кодов для восстановления аккаунта, внедрение методов MFA, шифрование данных в состоянии покоя или при передаче, а также многие другие инструменты.

Интеграция с языками программирования никогда не была такой простой, особенно благодаря широкому охвату документации и примеров приложений в коде, таких как пример Javascript, который устанавливает соединение с сервисом Amplify , который обеспечивает интеграцию в приложения с другими ресурсами AWS, такими как Cognito. См. ниже:

// Add 'aws-amplify' library into your application
// Configure Auth category with your Amazon Cognito credentials
Amplify.configure({
    Auth: {
        identityPoolId: 'XX-XXXX-X:XXXXXXXX-XXXX', // Amazon Cognito Identity Pool ID
        region: 'XX-XXXX-X', // Amazon Cognito Region
    }
});

// Call Auth.signIn with user credentials
Auth.signIn(username, password)
    .then(user => console.info(user))
    .catch(err => console.info(err));

Подробнее об этой службе можно узнать в документации AWS .

В чем заключается роль Amplify?

Сервис AWS позволяет вам интегрироваться с различными облачными ресурсами, связанными с веб-приложениями, удобным, безопасным и логичным способом.

С его помощью вы можете управлять GraphQL и REST API, работать с функциями AI и Machine Learning, взаимодействовать с чат-ботами, отправлять уведомления, использовать функции XR и многое другое.

В нашем случае мы используем его для создания полного слоя взаимодействия между нашим приложением и Cognito, избегая обмена конфиденциальными данными с back-end или даже использования ключей пользователей IAM на front-end.

Таким образом, мы можем сказать, что эта функция является средством для достижения нашего конечного результата - управления пользователями - с помощью инструментов федерации AWS.

Подробнее об Amplify можно узнать в AWS Docs .

Где в этой истории фигурирует CASL?

Хотя до сих пор мы имели представление о средствах управления пользователями в приложении, у нас все еще нет представления о том, как контролировать права доступа каждого из них к ресурсам, которые в нем присутствуют.

Исходя из этого, мы будем использовать библиотеку React, CASL, чтобы иметь возможность контролировать все действия, связанные с группами пользователей, чтобы мы могли определить, кто за что отвечает.

Первый шаг - понять, как работает эта библиотека. Для этого я воспользуюсь приведенной ниже диаграммой, чтобы наглядно показать, как она работает и определяет релизы и блоки действий пользователя:

Блок-схема работы CASL lib
Блок-схема работы CASL lib

В момент входа пользователя в систему, приложение React выполняет запрос разрешений и проверяет разрешение, которое назначено пользователю с помощью групп Cognito, после чего выполняются запросы в компоненты CASL, чтобы проверить, разрешено ли действие, которое пытается выполнить пользователь.

В общем, библиотека будет работать как "промежуточное программное обеспечение" (обратите внимание на кавычки в термине, так как это относится к другому фреймворку приложения ) между функциями приложения и разрешениями, которые имеют группы пользователей, освобождая или не освобождая отображение / выполнение функций.

Сделайте это сами!

Для примера использования функций, упомянутых в этой статье, я создал базовое приложение на React, чтобы вы могли отзеркалить его для развития своих интеграций управления пользователями.

Репозиторий: https://github.com/gugamainchein/cognito-casl

Заключение

В этой статье нам удалось получить полный обзор управления пользователями, а также их федерации для использования в приложениях, использующих стек React.

Помимо представленных мощных библиотек, предложенный в примерах формат оркестровки способствует масштабируемости функций в разработках любого рода.

В целом, мы видим, что сочетание Cognito и его функциональных возможностей с библиотеками, которые выполняют пользовательское управление разрешениями пользователей, как в случае с CASL, позволяет нам создавать чрезвычайно устойчивые приложения.

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?

05.05.2023 14:00

Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.

Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом

05.05.2023 11:59

Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря своим методам, они делают код очень простым для понимания и читабельным.

JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы

05.05.2023 11:57

Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний, то, не теряя времени, практикуйте наш бесплатный онлайн тест 1100+ JavaScript MCQs и развивайте свои навыки и знания.

Массив зависимостей в React
Массив зависимостей в React

05.05.2023 09:44

Все о массиве Dependency и его связи с useEffect.

Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий

05.05.2023 09:26

Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут вам настроить, как будет выглядеть ваш сайт Temple, и вы можете настроить его дизайн в зависимости от ваших потребностей в дополнение к более чем 15+...