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, позволяет нам создавать чрезвычайно устойчивые приложения.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?

20.08.2023 18:21

Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в 2023-2024 годах? Или это полная лажа?".

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией

20.08.2023 17:46

В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.

Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox

19.08.2023 18:39

Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в частности, магию поплавков и гибкость flexbox.

Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest

19.08.2023 17:22

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

Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️

18.08.2023 20:33

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

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL

14.08.2023 14:49

Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип предназначен для представления неделимого значения.