В настоящее время очень часто возникают вопросы об управлении пользователями и разрешениях доступа к каждой функции, когда вы начинаете создавать новое приложение. Думая об этом, я создал эту публикацию, чтобы помочь вам ответить на ваши вопросы и разъяснить использование Cognito и CASL, интегрированных в ваши проекты.
Несмотря на всю сложность, принцип всего заключается в том, чтобы понять, какую роль играет каждый маленький кусочек этой головоломки в нашей архитектуре. В качестве вспомогательного материала я создал диаграмму, чтобы наглядно показать, где находятся задействованные ресурсы. См. диаграмму:
Этот ресурс 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 .
Сервис AWS позволяет вам интегрироваться с различными облачными ресурсами, связанными с веб-приложениями, удобным, безопасным и логичным способом.
С его помощью вы можете управлять GraphQL и REST API, работать с функциями AI и Machine Learning, взаимодействовать с чат-ботами, отправлять уведомления, использовать функции XR и многое другое.
В нашем случае мы используем его для создания полного слоя взаимодействия между нашим приложением и Cognito, избегая обмена конфиденциальными данными с back-end или даже использования ключей пользователей IAM на front-end.
Таким образом, мы можем сказать, что эта функция является средством для достижения нашего конечного результата - управления пользователями - с помощью инструментов федерации AWS.
Подробнее об Amplify можно узнать в AWS Docs .
Хотя до сих пор мы имели представление о средствах управления пользователями в приложении, у нас все еще нет представления о том, как контролировать права доступа каждого из них к ресурсам, которые в нем присутствуют.
Исходя из этого, мы будем использовать библиотеку React, CASL, чтобы иметь возможность контролировать все действия, связанные с группами пользователей, чтобы мы могли определить, кто за что отвечает.
Первый шаг - понять, как работает эта библиотека. Для этого я воспользуюсь приведенной ниже диаграммой, чтобы наглядно показать, как она работает и определяет релизы и блоки действий пользователя:
В момент входа пользователя в систему, приложение React выполняет запрос разрешений и проверяет разрешение, которое назначено пользователю с помощью групп Cognito, после чего выполняются запросы в компоненты CASL, чтобы проверить, разрешено ли действие, которое пытается выполнить пользователь.
В общем, библиотека будет работать как "промежуточное программное обеспечение" (обратите внимание на кавычки в термине, так как это относится к другому фреймворку приложения ) между функциями приложения и разрешениями, которые имеют группы пользователей, освобождая или не освобождая отображение / выполнение функций.
Для примера использования функций, упомянутых в этой статье, я создал базовое приложение на React, чтобы вы могли отзеркалить его для развития своих интеграций управления пользователями.
Репозиторий: https://github.com/gugamainchein/cognito-casl
В этой статье нам удалось получить полный обзор управления пользователями, а также их федерации для использования в приложениях, использующих стек React.
Помимо представленных мощных библиотек, предложенный в примерах формат оркестровки способствует масштабируемости функций в разработках любого рода.
В целом, мы видим, что сочетание Cognito и его функциональных возможностей с библиотеками, которые выполняют пользовательское управление разрешениями пользователей, как в случае с CASL, позволяет нам создавать чрезвычайно устойчивые приложения.
20.08.2023 18:21
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в 2023-2024 годах? Или это полная лажа?".
20.08.2023 17:46
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
19.08.2023 18:39
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в частности, магию поплавков и гибкость flexbox.
19.08.2023 17:22
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для чтения благодаря своей простоте. Кроме того, мы всегда хотим проверить самые последние возможности в наших проектах!
18.08.2023 20:33
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий их языку и культуре.
14.08.2023 14:49
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип предназначен для представления неделимого значения.