AWS Amplify + React Native Authentication πŸ” FULL SETUP

Одна ΠΈΠ· самых Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… Ρ‚Π΅ΠΌ, срСди подписчиков ΠΌΠΎΠ΅Π³ΠΎ ΠΊΠ°Π½Π°Π»Π° Π”ΠΈΠΌΠΊΠ° Π Π΅Π°ΠΊΡ‚Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ β€” это аутСнтификация ΠΈ авторизация Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ React Native. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ я Ρ€Π΅ΡˆΠΈΠ» ΠΏΠΎΡΠ²Π΅Ρ‚ΠΈΡ‚ΡŒ этому вопросу ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ пост. ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ ΠΌΡ‹ Π½Π°Ρ‡Π½Π΅ΠΌ ΠΊΠΎΠ΄ΠΈΡ‚ΡŒ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ АутСнтификация/Авторизация.

Π§Π°Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ: Telegram

АутСнтификация β€” это ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° соотвСтствия ΡΡƒΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈ Ρ‚ΠΎΠ³ΠΎ, Π·Π° ΠΊΠΎΠ³ΠΎ ΠΎΠ½ пытаСтся сСбя Π²Ρ‹Π΄Π°Ρ‚ΡŒ, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π½Π΅ΠΊΠΎΠΉ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ (ΠΎΡ‚ΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΠΈ ΠΏΠ°Π»ΡŒΡ†Π΅Π², Ρ†Π²Π΅Ρ‚ Ρ€Π°Π΄ΡƒΠΆΠΊΠΈ, голос ΠΈ Ρ‚ Π΄.), Π² ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΌ случаС β€” с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠΎΡ‡Ρ‚Ρ‹ ΠΈ пароля.

Авторизация β€” это ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Π½ΠΎΠΌΠΎΡ‡ΠΈΠΉ Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… дСйствий Π² соотвСтствии с Ρ€Π°Π½Π΅Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠΉ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠ΅ΠΉ

Π’ ΠΊΠΎΠ½Ρ†Π΅ этой ΡΡ‚Π°Ρ‚ΡŒΠΈ, ΠΌΡ‹ с Π²Π°ΠΌΠΈ сдСлаСм это мобильноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅:

АутСнтификация ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½Π΅ΠΎΡ‚ΡŠΠ΅ΠΌΠ»Π΅ΠΌΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ практичСски любого прилоТСния. Π—Π½Π°Π½ΠΈΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΡ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ, ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΊΠ°ΠΊΠΈΠ΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ, ΠΈ вошли Π»ΠΈ ΠΎΠ½ΠΈ Π² систСму, позволяСт Π²Π°ΡˆΠ΅ΠΌΡƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ прСдставлСния ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ для Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ вошСдшСго Π² систСму ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Ρƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ для рСгистрации ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, ΠΈΡ… Π²Ρ…ΠΎΠ΄Π° Π² систСму, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ ΠΈ обновлСния ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ, Π° Ρ‚Π°ΠΊΠΆΠ΅ мноТСства Π΄Ρ€ΡƒΠ³ΠΈΡ… Π·Π°Π΄Π°Ρ‡, связанных с ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠ΅ΠΉ. Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ прилоТСния часто Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ Ρ‚Π°ΠΊΠΈΡ… Π²Π΅Ρ‰Π΅ΠΉ, ΠΊΠ°ΠΊ OAUTH (открытая аутСнтификация), MFA (многофакторная аутСнтификация) ΠΈ TOTP (основанныС Π½Π° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΏΠ°Ρ€ΠΎΠ»ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ).

Π’ ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Ρ€Π°ΡΠΊΡ€ΡƒΡ‡ΠΈΠ²Π°Ρ‚ΡŒ всС эти Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ с нуля. Одна Ρ‚ΠΎΠ»ΡŒΠΊΠΎ эта Π·Π°Π΄Π°Ρ‡Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π½ΡΡ‚ΡŒ Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π½Π΅Π΄Π΅Π»ΠΈ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ мСсяцы, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ всС ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это бСзопасно. К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, сСгодня Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ управляСмыС сСрвисы Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Auth0, Okta ΠΈ Amazon Cognito, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ всС это для нас.

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΈ бСзопасно Π²Π½Π΅Π΄Ρ€ΠΈΡ‚ΡŒ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ React Native с использованиСм Amazon Cognito с AWS Amplify.

Amazon Cognito β€” это ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ управляСмый сСрвис ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΎΡ‚ AWS. Cognito обСспСчиваСт ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡƒΡŽ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€Π°Ρ†ΠΈΡŽ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, Π²Ρ…ΠΎΠ΄ Π² систСму, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ доступа, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ² ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠ΅ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. Cognito ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ Π΄ΠΎ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π²Ρ…ΠΎΠ΄ Π² систСму с поставщиками ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… сСтСй, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ Facebook, Google ΠΈ Amazon.

Cognito состоит ΠΈΠ· Π΄Π²ΡƒΡ… основных частСй: ΠΏΡƒΠ»ΠΎΠ² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈ ΠΏΡƒΠ»ΠΎΠ² ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ.

User Pools β€” ΠΏΡƒΠ»Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ…Ρ€Π°Π½ΠΈΡ‚ всСх Π²Π°ΡˆΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ Π΄ΠΎ сотСн ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. Π­Ρ‚ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ управляСмый сСрвис. Как бСссСрвСрная тСхнология, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ ΠΏΡƒΠ»Ρ‹ Π»Π΅Π³ΠΊΠΎ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°ΡŽΡ‚ΡΡ, Π½Π΅ бСспокоясь ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π»ΡŽΠ±ΡƒΡŽ инфраструктуру. ΠŸΡƒΠ»Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ β€” это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ управляСт всСми ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΈ входят Π² ΡƒΡ‡Π΅Ρ‚Π½ΡƒΡŽ запись, ΠΈ являСтся основной Ρ‡Π°ΡΡ‚ΡŒΡŽ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΡ‹ сосрСдоточимся Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅.

Identity pools β€” ΠΏΡƒΠ»Ρ‹ удостовСрСний ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π²Π°ΠΌ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, Π²ΠΎΡˆΠ΅Π΄ΡˆΠΈΡ… Π² вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, для доступа ΠΊ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ Π΄Ρ€ΡƒΠ³ΠΈΠΌ сСрвисам AWS. Допустим, Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ доступ ΠΊ лямбда-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ ΠΌΠΎΠ³ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ API. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ это ΠΏΡ€ΠΈ создании ΠΏΡƒΠ»Π° удостовСрСний. Π’ ΠΏΡƒΠ»Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ источником этих ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡƒΠ» ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Cognito ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Facebook ΠΈΠ»ΠΈ Google.

Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ, ΠΊΠΎΠ³Π΄Π° ΠΏΡƒΠ» ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Amazon Cognito ΠΈ ΠΏΡƒΠ» удостовСрСний ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ вмСстС.

Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ схСму для ΠΎΠ±Ρ‰Π΅Π³ΠΎ сцСнария Amazon Cognito. Π—Π΄Π΅ΡΡŒ Ρ†Π΅Π»ΡŒ состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ вашСго ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΅ΠΌΡƒ доступ ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ сСрвису AWS.

  1. На ΠΏΠ΅Ρ€Π²ΠΎΠΌ этапС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ вашСго прилоТСния Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² систСму Ρ‡Π΅Ρ€Π΅Π· ΠΏΡƒΠ» ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Ρ‚ΠΎΠΊΠ΅Π½Ρ‹ ΠΏΡƒΠ»Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ послС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ.
  2. Π—Π°Ρ‚Π΅ΠΌ вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°Π΅Ρ‚ Ρ‚ΠΎΠΊΠ΅Π½Ρ‹ ΠΏΡƒΠ»Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ AWS Ρ‡Π΅Ρ€Π΅Π· ΠΏΡƒΠ» удостовСрСний.
  3. НаконСц, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ вашСго прилоТСния ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эти ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ AWS для доступа ΠΊ Π΄Ρ€ΡƒΠ³ΠΈΠΌ сСрвисам AWS, Ρ‚Π°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ Amazon S3 ΠΈΠ»ΠΈ DynamoDB.

Cognito User Pools позволяСт Π²Π°ΡˆΠ΅ΠΌΡƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ для слуТбы для управлСния всСми аспСктами ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ‚Π°ΠΊΠΈΠ΅ Π²Π΅Ρ‰ΠΈ, ΠΊΠ°ΠΊ:

  • РСгистрация ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ
  • Π’Ρ…ΠΎΠ΄ Π² систСму ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ
  • Π’Ρ‹Ρ…ΠΎΠ΄ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ
  • Π‘ΠΌΠ΅Π½Π° пароля ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ
  • Бброс пароля ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ
  • ΠŸΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° MFA
  • Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ Amazon Cognito с AWS Amplify

AWS Amplify ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Amazon Cognito Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ способами. ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ сСрвисы Amazon Cognito нСпосрСдствСнно ΠΈΠ· интСрфСйса ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки AWS Amplify. Π‘ΠΎΠ·Π΄Π°Π² слуТбу Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Ρ‡Π΅Ρ€Π΅Π· CLI, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, signUp, signIn ΠΈ signOut) ΠΈΠ· прилоТСния JavaScript с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ клиСнтской Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Amplify JavaScript.

Amplify Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ настроСнныС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π²Ρ‹ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ Ρ†Π΅Π»Ρ‹Π΅ ΠΏΠΎΡ‚ΠΎΠΊΠΈ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ всСго Π·Π° ΠΏΠ°Ρ€Ρƒ строк ΠΊΠΎΠ΄Π° для Ρ‚Π°ΠΊΠΈΡ… срСд, ΠΊΠ°ΠΊ React, React Native, Vue ΠΈ Angular.

Π’Ρ‹ спроситС ΠΈ сколько ΠΆΠ΅ это всС стоит?

ΠŸΠ»Π°Ρ‚ΠΈΡ‚Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π° Ρ‚ΠΎ, Ρ‡Π΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ΡΡŒ. Никаких ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ΅ΠΉ.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Amazon Cognito Identity для создания ΠΏΡƒΠ»Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, Π²Ρ‹ ΠΏΠ»Π°Ρ‚ΠΈΡ‚Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π° количСство Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π² мСсяц (MAU). MAU β€” это ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ°Π»Π΅Π½Π΄Π°Ρ€Π½ΠΎΠ³ΠΎ мСсяца Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»ΠΈ хотя Π±Ρ‹ ΠΎΠ΄Π½Ρƒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ: Ρ€Π΅Π³ΠΈΡΡ‚Ρ€Π°Ρ†ΠΈΡŽ, Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΡŽ, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠΊΠ΅Π½Π° ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ пароля. ΠŸΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ сСссии Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈ Π½Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π² этом ΠΊΠ°Π»Π΅Π½Π΄Π°Ρ€Π½ΠΎΠΌ мСсяцС Π½Π΅ ΠΎΠΏΠ»Π°Ρ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ.

CODING TIME πŸ‘¨πŸΌβ€πŸ’»πŸ‘©πŸ»β€πŸ’»

PART 1

Π’Π΅ΡΡŒ ΠΊΠΎΠ΄ для этой части ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π½Π° Github.

Π’ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ этой части:

Step 1

Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ βš›οΈ

react-native init messaga

ЗапускаСм ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ πŸš€

iOS

cd messaga && react-native run-ios

Android

cd messaga && react-native run-android

Step 2

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ΠΈΠΊΠΎΠ½ΠΊΠΈ πŸ‘Ύ

Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΈΠΊΠΎΠ½ΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠΌ AWS Amplify, поэтому ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ΠΈΡ… согласно этой инструкции πŸ“ƒ.
ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ошибок. ДобавляСм Π² App.js

import Icon from 'react-native-vector-icons/FontAwesome5'const App = () => {
return (
<>
<Icon name="comments" size={30} color="#900" />
</>
)
}

Step 3

РСгистрируСм свой AWS account

РСгСстрируСмся согласно этой инструкции πŸ“ƒ ΠΈ ΠΏΠΎ Π²ΠΈΠ΄Π΅ΠΎΡƒΡ‡Π΅Π±Π½ΠΈΠΊΡƒπŸ“Ί Ρ‡Π΅ΠΊΠ°Π΅ΠΌ всС 5 шагов.
Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅!!! ΠŸΠΎΡ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ΡΡ банковская ΠΊΠ°Ρ€Ρ‚Π° πŸ’³, Π³Π΄Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ 1$ πŸ’΅
Π’Π°ΠΌ ΠΆΠ΅ смотрим ΠΈ ставим Amplify Command Line Interface (CLI)

Step 4

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ AWS Amplify Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ React Native

Π’ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° React Native ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ наш бэкСнд

amplify init

ΠžΡ‚Π²Π΅Ρ‡Π°Π΅ΠΌ Π½Π° вопросы:

Π”Π°Π»ΡŒΡˆΠ΅ начинаСтся инициализация ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° πŸš€
β § Initializing project in the cloud…
Your project has been successfully initialized and connected to the cloud!

Step 5

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ΠΏΠ»Π°Π³ΠΈΠ½ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ β€” Auth πŸ”

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ находится Π² ΠΎΠ±Π»Π°ΠΊΠ΅, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ прСдоставлСниС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ возмоТности Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² нашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΈ Π²ΠΎΠΉΡ‚ΠΈ Π² систСму.

Командой

amplify add auth

ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ΠΏΠ»Π°Π³ΠΈΠ½ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ. Π’Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Π­Ρ‚ΠΎ добавляСт ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ рСсурсов auth локально Π² ваш ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ ampify/backend/auth

Π’Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. default. Enter ΠΈ ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π² систСму. Email(Π—Π° SMS ΡΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ дСньги).

Successfully added resource yourname locally

ΠžΡ‚ΠΏΡ€Π°Π²Π»ΡΠ΅ΠΌ измСнСния Π² ΠΎΠ±Π»Π°ΠΊΠΎ πŸ’­

amplify push

βœ” All resources are updated in the cloud

Step 6

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ AWS Amplify Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ React Native βš›οΈ

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ Π² этой инструкции πŸ“ƒ, Π° ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎ ΠΈ ΠΏΠΎ прямой Ρ‚Π°ΠΊ:

yarn add aws-amplify @aws-amplify/core aws-amplify-react-native amazon-cognito-identity-js @react-native-community/netinfo

ПослС установки ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°Ρ…ΠΎΠ΄ΠΈΠΌ Π² ΠΏΠ°ΠΏΠΊΡƒ ios ΠΈ ставим ΠΏΠΎΠ΄Ρ‹

cd ios && pod install && cd ..

Step 7

Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠ΅ΠΌ структуру ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ /src ΠΈ пСрСносим Ρ‚ΡƒΠ΄Π° Ρ„Π°ΠΉΠ» App.js, пСрСимСновывая Π΅Π³ΠΎ Π² index.js

ΠŸΡ€Π°Π²ΠΈΠΌ ΠΈΠΌΠΏΠΎΡ€Ρ‚ Π² /messaga/index.js ΠΈ скрываСм Π±ΡƒΠ΄ΡƒΡ‰ΠΈΠ΅ прСдупрСТдСния.

Step 8

Минимальная конфигурация ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Authenticator

Amplify.configure β€” конфигурация ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

Authenticator β€” ΠœΠΎΠ΄ΡƒΠ»ΡŒ AWS Amplify Authentication прСдоставляСт API-интСрфСйсы Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ стандартныС Π±Π»ΠΎΠΊΠΈ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ хотят ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ возмоТности Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

ЗапускаСм симулятор

Step 9

ΠŸΡ€Π°Π²ΠΈΠΌ ΠΈΠ½ΠΏΡƒΡ‚Ρ‹ Π² App.js

Step 10

МСняСм Ρ‚Π΅ΠΌΡƒ UI πŸ–Œ

Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Ρ‚ΠΎΡ‡ΠΊΡƒ экспорта Π½Π°ΡˆΠΈΡ… Π±ΡƒΠ΄ΡƒΡ‰ΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² /src/components/index.js с содСрТаниСм

export * from './AmplifyTheme'

ΠΈ соотвСтствСно создаСм сам Ρ„Π°ΠΉΠ» /src/components/AmplifyTheme/index.js Ρ‚Π΅ΠΌΡ‹ с содСрТаниСм

И ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Ρ‚Π΅ΠΌΡƒ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Authenticator src/index.js

Step 11

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ русский язык πŸ‡·πŸ‡Ί

ДобавляСм экспорт Π² /src/components/index.js

export * from './Localei18n'

CΠΎΠ·Π΄Π°Π΅ΠΌ сам Ρ„Π°ΠΉΠ» /src/components/Localei18n/index.js с содСрТаниСм

И ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Localei18n Π² src/index.js

PART 2

Π’Π΅ΡΡŒ ΠΊΠΎΠ΄ для этой части ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π½Π° Github.

Π’ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹Ρ… Π² ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Amplify написано

Data is stored unencrypted when using standard storage adapters (localStorage in the browser and AsyncStorage on React Native). Amplify gives you the option to use your own storage object to persist data. With this, you could write a thin wrapper around libraries like:

react-native-keychain

react-native-secure-storage

Expo’s secure store

Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ хранятся Π² Π½Π΅ Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅, Π° это риск πŸ•· ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ бСзопасности с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌΠΈ Π½Π΅Π³Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ послСдствиями πŸ•Έ.

Π’ΠΎ Π²Ρ‚ΠΎΡ€Ρ‹Ρ… стандартный UI ΠΎΡ‚ Amplify Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ всСгда удовлСтворяСт UX приходящий со стороны Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠ°, поэтому ΠΌΡ‹ Ρ€Π΅ΡˆΠΈΠΌ эти Π΄Π²Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ Π² этой части.

Step 1

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ UI Kit, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² согласно этой ΡΡ‚Π°Ρ‚ΡŒΠΈ.

Step 2

Π‘Ρ‚Π°Π²ΠΈΠΌ Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΡŽ react-navigation, Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ написано здСсь (Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ написаниС этой ΡΡ‚Π°Ρ‚ΡŒΠΈ):

yarn add react-native-reanimated react-native-gesture-handler react-native-screens react-native-safe-area-context @react-native-community/masked-view @react-navigation/stack

ДобавляСм ΠΏΠΎΠ΄Ρ‹ ΠΏΠΎΠ΄ iOS

cd ios && pod install && cd ..

πŸ“Œ Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ послС ΠΊΠ°ΠΆΠ΄ΠΎΠΉ установки Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ iOS ΠΈ Android, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡ‚ΠΎΠΌ Π½Π΅ ΠΈΡΠΊΠ°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ΠΈΠ·-Π·Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠ°Π΄Π°Π΅Ρ‚.

Step 3

Π‘Ρ‚Π°Π²ΠΈΠΌ react-native-keychain

БСзопасноС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ react-native-keychain для React Native.

yarn add react-native-keychain

И добавляСм ΠΏΠΎΠ΄Ρ‹ ΠΏΠΎΠ΄ iOS

cd ios && pod install && cd ..

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ react-native-keychain

Богласно Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ докумСнтация:

ΠŸΡ€ΠΈ использовании Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ с AWS Amplify Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ Ρ‚ΠΎΠΊΠ΅Π½Ρ‹ Amazon Cognito Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ. Π’ΠΎΠΊΠ΅Π½Ρ‹ автоматичСски ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‚ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ ΠΏΡ€ΠΈ нСобходимости. Π’ΠΎΠΊΠ΅Π½Ρ‹ бСзопасности, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ IdToken ΠΈΠ»ΠΈ AccessToken, хранятся Π² localStorage для Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° ΠΈ Π² AsyncStorage для React Native. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ эти Ρ‚ΠΎΠΊΠ΅Π½Ρ‹ Π² Π±ΠΎΠ»Π΅Π΅ бСзопасном мСстС ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Amplify Π½Π° сторонС сСрвСра, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ свой собствСнный ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ хранСния для хранСния этих Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ².

ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΡƒΠ΅ΠΌ наш src/index.js

Step 4

ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Ρ‹

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΊΠΎΠΏΠΈΠΏΠ°ΡΡ‚ΠΈΡ‚ΡŒ ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅ значСния, ΠΌΡ‹ создаСм Ρ„Π°ΠΉΠ» с константами для ΠΎΠ±Ρ‰Π΅Π³ΠΎ использования Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°Ρ… src/constants.js

Step 5

AppNavigator

Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Ρ„Π°ΠΉΠ» с ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠ΅ΠΉ Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ для нашСй кастомной Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ src/AppNavigator.js

Step 6

Hello screen

Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Ρ‚ΠΎΡ‡ΠΊΡƒ Π²Ρ…ΠΎΠ΄Π°, Π³Π΄Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π»Π΅ΠΆΠ°Ρ‚ΡŒ наши экраны Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ src/screens/Authenticator/index.js , Π³Π΄Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ экран привСтсвия

export * from './Hello'

Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ экран привСтствия src/screens/Authenticator /Hello/index.js Π’ Ρ…ΡƒΠΊΠ΅ useEffect ΠΌΡ‹ выполняСм ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Π½Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Ρ‚ΠΎΠΊΠ΅Π½Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π³Π΄Π΅ Π² случаС true ΠΌΡ‹ отправляСмся Π½Π° экран User, Π° Π² случаС false остаСмся Π½Π° этом экранС.

Π‘ΠΎΠ±ΠΈΡ€Π°Π΅ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ встрСчаСм экран привСтствия.

Step 7

SIGN UP

Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ экран рСгистрации SIGN_UP src/screens/Authenticator/SignUp/index.js , Π³Π΄Π΅ для Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ Auth.signUp

Step 8

CONFIRM SIGN UP

ПослС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ ΠΎΡ‚Π²Π΅Ρ‚Π° с сСрвСра, ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π½Π° экран подтвСрТдСния ΠΈ Π²Π²ΠΎΠ΄Π° ΠΊΠΎΠ΄Π°, ΠΏΡ€ΠΈΡˆΠ΅Π΄ΡˆΠ΅Π³ΠΎ Π½Π°ΠΌ Π½Π° ΠΏΠΎΡ‡Ρ‚Ρƒ. Для этого создаСм экран CONFIRM_SIGN_UP src/screens/Authenticator/ConfirmSignUp/index.js

RESEND CODE

Если ΠΊΠΎΠ΄ Π½Π΅ ΠΏΡ€ΠΈΡˆΠ΅Π», Ρ‚ΠΎ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ. Для этого Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ Resend code? ΠΌΡ‹ вСшаСм ΠΌΠ΅Ρ‚ΠΎΠ΄ Auth.resendSignUp(userInfo.email)

Π’ случаС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π°

Auth.confirmSignUp(email, code, { forceAliasCreation: true })

ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄

Auth.signIn(email, password)

Step 9

USER

ΠΈ Π² случаС успСха ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π½Π° экран USER, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ создаСм c ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· прилоТСния ΠΈ очисткой Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ² src/screens/Authenticator/User/index.js

Step 10

SIGN IN

ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ зарСгистрировали ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΡŽΠ·Π΅Ρ€Ρƒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²ΠΎΠΉΡ‚ΠΈ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ‡Π΅Ρ€Π΅Π· Π»ΠΎΠ³ΠΈΠ½ ΠΈ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ. Для этого ΠΌΡ‹ создаСм экран SIGN_IN src/screens/Authenticator/SignIn/index.js

Π’ случаС успСха, ΠΌΡ‹ отправляСм ΡŽΠ·Π΅Ρ€Π° Π½Π° экран USER, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ ΡƒΠΆΠ΅ Ρ€Π°Π½Π΅Π΅ сдСлали, Π° Ссли ΡŽΠ·Π΅Ρ€ Π·Π°Π±Ρ‹Π» ΠΈΠ»ΠΈ Π½Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π²Π²Π΅Π» ΠΏΠ°Ρ€ΠΎΠ»ΡŒ, Ρ‚ΠΎ ΠΌΡ‹ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ ΠΎΡˆΠΈΠ±ΠΊΡƒ Forgot Password? ΠΈ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌ ΡΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ.

Step 11

FORGOT

Для этого ΠΌΡ‹ создаСм экран FORGOT src/screens/Authenticator/Forgot/index.js

Step 12

FORGOT PASSWORD SUBMIT

ПослС подтвСрТдСния e-mail, ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ Auth.forgotPassword(email) ΠΈ Π² случаС, Ссли Ρ‚Π°ΠΊΠΎΠΉ ΡŽΠ·Π΅Ρ€ Π΅ΡΡ‚ΡŒ, Ρ‚ΠΎ отправляСм ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π½Π° экран FORGOT_PASSWORD_SUBMIT src/screens/Authenticator/ForgotPassSubmit/index.js

Π³Π΄Π΅ послС Π²Π²ΠΎΠ΄Π° ΠΊΠΎΠ΄Π°, ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π½Π° ΠΏΠΎΡ‡Ρ‚Ρƒ, Π½ΠΎΠ²ΠΎΠ³ΠΎ пароля ΠΈ Π΅Π³ΠΎ подтвСрТдСния, ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ смСны пароля Auth.forgotPasswordSubmit(email, code, password) успСх ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ отправляСт ΡŽΠ·Π΅Ρ€Π° Π½Π° экран USER.

Step 13

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ всС созданыС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π² src/screens/Authenticator/index.js

export * from './Hello'
export * from './User'
export * from './SignIn'
export * from './SignUp'
export * from './Forgot'
export * from './ForgotPassSubmit'
export * from './ConfirmSignUp'

Step 14

добавляСм Ρ„Π°ΠΉΠ» ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ:

Step 15

Clean Up

Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΊΠ°ΡΡ‚ΠΎΠΌΠ½ΡƒΡŽ Ρ‚Π΅ΠΌΡƒ, Ρ‚ΠΎ удаляСм ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ AmplifyTheme ΠΈ Localei18n

Step 16

Debug

Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ происходит с Ρ‚ΠΎΠΊΠ΅Π½Π°ΠΌΠΈ Π² вашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ /index.js

window.LOG_LEVEL = 'DEBUG'

πŸ“Œ Волько Π½Π΅ Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ, ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ Π±ΡƒΠ΄ΡƒΡ‚Π΅ Π²Ρ‹ΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² сторы.

Doneβœ…

ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ Π§Π°ΡΡ‚ΡŒ II β€” CRUD (Create Read Update Delete) AWS Amplify(AppSync) + React Native πŸ›°

REFERENCES:

  1. https://aws-amplify.github.io
  2. https://aws.amazon.com/ru/cognito/
  3. https://learning.oreilly.com/library/view/full-stack-serverless/9781492059882/

--

--

Π”ΠΈΠΌΠΊΠ° Π Π΅Π°ΠΊΡ‚Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ
react-native-init

Он ΠΆΠ΅ Π”ΠΈΠΌΠΊΠ° ΠšΡ€Π΅Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ, ΡΠΎΠ·Π΄Π°Ρ‚Π΅Π»ΡŒ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π² Ρ€ΡƒΠ½Π΅Ρ‚Π΅ курса ΠΏΠΎ React Native. Активно Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°ΡŽΡ‰ΠΈΠΉ Π·Π° Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ Open Source ΠΊΠΎΠΌΠΌΡŒΡŽΠ½ΠΈΡ‚ΠΈ.