Керування користувачами за допомогою AWS Cognito - (1/3) Початкове налаштування

Повний веб-шаблон AWS - Підручник 1А

Основний зміст Клацніть тут Частина A: Початкове налаштування Частина B: Основна функціональність Частина C: Останні кроки до повноцінного

Завантажте Github тут.

Вступ

Налаштування автентифікації користувача може зайняти століття, але це важливий наріжний камінь будь-якої робочої програми. Є такі варіанти, як AuthO та PassportJS, але вони або мають жорсткі криві навчання, вимагають постійного обслуговування або вразливі до помилок програміста, оскільки вимагають самостійного налаштування. Якби тільки була хмарна, настроювана, безпечна та масштабована служба управління користувачами в хмарі.

Представляємо Amazon Cognito та об’єднані ідентичності. Cognito - це рішення AWS для управління профілями користувачів, а об'єднані ідентифікатори допомагають відстежувати користувачів у кількох логінах. Інтегрований в екосистему AWS, AWS Cognito відкриває цілий світ можливостей для вдосконаленого розвитку інтерфейсу, оскільки ролі Cognito + IAM дають вам вибірковий безпечний доступ до інших служб AWS. Хочете дозволити доступ до сегмента S3 лише певним підписаним користувачам? Просто підключіть логін Cognito до ролі IAM, дозволеної доступ до сегмента, і тепер ваш сегмент захищений! Найкраще, безкоштовний рівень дає вам 50000 активних користувачів щомісяця, тому вам не доведеться турбуватися про те, щоб платити більше, поки ви не будете готові до зростання.

Цей шаблон є веб-додатком React-Redux, який має всі функції попередньо інтегрованих AWS Cognito та Federated Identities. Використовуйте цей шаблон, якщо у вас є програма, яку ви хочете розробити з готовою до виробництва службою автентифікації з самого початку. Насправді це потужний стартовий майданчик для вашої наступної чудової ідеї.

Перейдіть до AWS Cognito на консолі AWS, щоб розпочати!

Початкове налаштування - Cognito

Ми будемо налаштовувати AWS Cognito, який є власним пулом входу (наприклад, вхід за допомогою електронної пошти). Cognito НЕ є менеджером входу для будь-якого типу входу (наприклад, Facebook та Gmail), лише для користувацьких входів.

Давайте спочатку створимо пул користувачів, натиснувши “Управління своїми пулами користувачів”. Пул користувачів - це група користувачів, які відповідають одному і тому ж призначенню. Якби ви робили клон Uber, ви б створили 2 пули користувачів - один для водіїв та один для райдерів. Наразі дозвольте лише створити 1 новий пул користувачів під назвою “App_Users”. Екран налаштування повинен виглядати так:

Ми пройдемо цей процес крок за кроком, тому введіть ім’я пулу “App_Users” і натисніть “Покрокові налаштування”. Наступним кроком є ​​"Атрибути", де ми визначаємо атрибути, які матимуть наші "App_Users".

Зараз ми хочемо мати лише електронну пошту, пароль та “agentName”. Електронний лист - це наш унікальний ідентифікатор користувача, а пароль - обов’язкове поле (саме тому ви не бачите його у списку стандартних атрибутів). Ми хочемо, щоб користувачі могли мати кодове ім’я, тому давайте встановимо “agentName” - це власний атрибут. Ми використовуємо лише “agentName”, щоб показати, як додати власні атрибути. Прокрутіть вниз, і ви побачите опцію додавання власних атрибутів.

На дату написання цього посібника ви не можете повернутися назад і змінити власні атрибути (навіть якщо AWS, здається, зможе), тому переконайтеся, що це правильно зроблено з першого разу! Якщо вам потрібно змінити атрибути, вам доведеться створити новий пул користувачів. Сподіваємось, AWS скоро вирішить цю проблему. У будь-якому випадку, переходимо до політики облікового запису!

Отже, ми бачимо, що наші паролі можуть бути застосовані до певних символів. Очевидно, що вимагати поєднання різних типів символів було б більш безпечно, але користувачам це часто не подобається. Що стосується середньої точки зору, давайте просто вимагаємо, щоб пароль містив більше 8 символів і містив принаймні 1 число. Ми також хочемо, щоб користувачі мали можливість зареєструватися. Інші частини не такі важливі, тому перейдемо до наступного кроку: перевірки.

Ця частина чудова, ми можемо легко інтегрувати багатофакторну автентифікацію (MFA). Це означає, що користувачі повинні зареєструватися електронною поштою, а також іншою формою автентифікації, такою як номер телефону. На цей номер телефону буде надіслано PIN-код, і користувач використовуватиме його для підтвердження свого облікового запису. Ми не будемо використовувати MFA у цьому підручнику, просто підтвердження електронною поштою. Встановіть для MFA значення «вимкнено» та встановіть прапорець «Електронна пошта» як метод підтвердження. Ми можемо залишити заповнену роль “AppUsers-SMS-Role” (роль IAM), оскільки ми не будемо її використовувати, але можемо використовувати в майбутньому. Cognito використовує цю роль IAM для авторизації надсилання текстових SMS-повідомлень, що використовуються у MFA. Оскільки ми не використовуємо MFA, ми можемо перейти до: Налаштування повідомлень.

Коли користувачі отримують електронні листи про підтвердження свого облікового запису, ми можемо вказати, що в них входить. Тут ми створили власний електронний лист і програмно розмістили його в коді для підтвердження, який відображається як {####}. На жаль, ми не можемо передати інші змінні, такі як посилання для підтвердження. Для цього нам довелося б використовувати комбінацію AWS Lambda та AWS SES.

Прокрутіть сторінку вниз на кроці Налаштування повідомлень, і ми можемо додати власні адреси FROM та REPLY-TO за замовчуванням. Для цього нам потрібно перевірити електронну адресу в AWS SES, яку легко і надзвичайно швидко налаштувати. На новій вкладці перейдіть на домашню сторінку консолі AWS, клацнувши помаранчевий кубик у верхньому лівому куті. На домашній сторінці консолі знайдіть SES (Проста служба електронної пошти). Клацніть, щоб перейти на сторінку SES, а потім натисніть посилання Адреси електронної пошти в меню ліворуч.

Потім натисніть «Підтвердити нову адресу» та введіть електронну адресу, яку ви хочете підтвердити.

Тепер увійдіть до своєї електронної пошти та відкрийте електронну пошту від AWS. Клацніть на посилання в електронній пошті, щоб підтвердити, і ви знову будете перенаправлені на сторінку AWS SES. Ви успішно підтвердили електронну адресу! Це було легко.

Тепер це зроблено, повернемося до AWS Cognito і перейдемо до: Теги.

Не обов’язково додавати теги до пулу користувачів, але це, безумовно, корисно для управління багатьма службами AWS. Давайте просто додамо тег для "AppName" і встановимо для нього значення "MyApp". Тепер ми можемо перейти до: Пристрої.

Ми можемо вибрати пам’ятати пристрої наших користувачів. Зазвичай я вибираю “Завжди”, оскільки запам’ятовування користувацьких пристроїв є безкоштовним і не вимагає кодування з нашого боку. Інформація теж корисна, то чому б і ні? Наступний крок: Програми.

Ми хочемо, щоб певні програми мали доступ до нашого пулу користувачів. Ці програми відсутні ніде більше в екосистемі AWS, що означає, що коли ми створюємо "додаток", це ідентифікатор лише для Cognito. Додатки корисні, оскільки ми можемо мати кілька додатків, що мають доступ до одного і того ж пулу користувачів (уявіть собі додаток-клон Uber та безкоштовний додаток з практики водійських іспитів). Ми встановимо маркер оновлення на 30 днів, що означає, що кожна спроба входу поверне маркер оновлення, який ми можемо використовувати для автентифікації, а не кожного разу входити в систему. Ми знімаємо клавішу "Створити таємницю клієнта", оскільки ми маємо намір увійти в наш пул користувачів з переднього кінця, а не з заднього кінця (ми не можемо зберігати секрети на передньому кінці, оскільки це небезпечно). Натисніть «Створити програму», а потім «Наступний крок», щоб перейти до: Тригери.

Ми можемо запускати різні дії в процесі автентифікації та налаштування користувача. Пам’ятаєте, як ми говорили, що можемо створювати складніші електронні листи для підтвердження облікового запису за допомогою AWS Lambda та AWS SES? Тут ми б це налаштували. Для обсягу цього підручника ми не використовуватимемо жодних тригерів AWS Lambda. Перейдемо до останнього кроку: Огляд.

Тут ми розглядаємо всі конфігурації налаштування, які ми зробили. Якщо ви впевнені в цій інформації, натисніть «Створити пул», і буде створено наш пул користувачів Cognito!

Зверніть увагу на ідентифікатор us-east-1_6i5p2Fwaoпулу на вкладці Деталі пулу.

І ідентифікатор клієнта 5jr0qvudipsikhk2n1ltcq684bпрограми на вкладці Програми. Обидва вони нам знадобляться в нашому додатку на стороні клієнта.

Тепер, коли налаштовано Cognito, ми можемо налаштувати об’єднані посвідчення для декількох постачальників входів. У цьому навчальному посібнику ми не висвітлюємо особливості входу в FB, оскільки він не входить в обсяг цієї серії навчальних матеріалів. Однак інтегрувати FB Login дуже просто, і ми покажемо, як це робиться в розділі нижче.

Початкове налаштування - об'єднані посвідчення

Далі ми хочемо встановити “Федеративні посвідчення”. Якщо у нас є програма, яка дозволяє кільком провайдерам входу (Amazon Cognito, Facebook, Gmail..etc) одному і тому ж користувачеві, ми б використовували об’єднані ідентифікатори для централізації всіх цих входів. У цьому підручнику ми будемо використовувати як наш логін Amazon Cognito, так і потенційний логін на Facebook. Перейдіть до об’єднаних ідентифікаційних даних і розпочніть процес створення нового пулу ідентифікаційних даних. Дайте йому відповідну назву.

Тепер розгорніть розділ «Постачальники автентифікації», і ви побачите екран нижче. У розділі Cognito ми збираємося додати створений нами щойно створений пул користувачів Cognito. Скопіюйте та вставте ідентифікатор пулу користувачів та ідентифікатор клієнта програми, про які ми вже відзначали раніше.

І якщо ми хотіли ввійти в Facebook для того самого пулу ідентифікацій користувачів, ми можемо перейти на вкладку Facebook і просто ввести наш ідентифікатор програми Facebook. На консолі AWS це все!

Збережіть пул ідентифікаційних даних, і ви будете перенаправлені на екран нижче, де створені ролі IAM для представлення об'єднаного пулу ідентифікаційних даних. Неаутентифікована роль IAM призначена для користувачів, які не ввійшли в систему, а автентифікована версія - для користувачів, які не увійшли в систему. Ми можемо надати цим ролям IAM доступ до інших ресурсів AWS, таких як сегменти S3 та подібні. Ось як ми досягаємо більшої безпеки, інтегруючи наш додаток у всю екосистему AWS. Продовжуйте завершувати створення цього ідентифікаційного пулу.

Після успішного створення пулу ідентифікаторів ви побачите екран нижче. Тепер вам потрібно лише відзначити одну річ, яка є ідентифікатором пулу ідентифікаційних даних (тобто. us-east-1:65bd1e7d-546c-4f8c-b1bc-9e3e571cfaa7), Який ми будемо використовувати пізніше в нашому коді. Чудово!

Вийдіть із усього і поверніться на головний екран AWS Cognito. Якщо ми заходимо в розділ Cognito або розділ Federated Identities, ми бачимо, що у нас створено 2 необхідні пули. AWS Cognito та AWS Federated Identities готові до роботи!

Це все для налаштування! За допомогою цих 2 пулів ми можемо інтегрувати решту нашого коду в повну службу автентифікації Amazon і досягти найвищого рівня управління користувачами. Це було набагато простіше, ніж власні OAuth + Passport.js! Якщо вам подобається побачене до цього часу, продовжуйте читати! Пам’ятайте, що після того, як ви це дізнаєтесь один раз, у майбутньому це буде надзвичайно просто, тому, безумовно, варто витратити час. До зустрічі у наступному розділі!

Основний зміст Клацніть тут Частина A: Початкове налаштування Частина B: Основна функціональність Частина C: Останні кроки до повноцінного використання Ці методи були частково використані при розгортанні renthero.ca