Διαχείριση χρηστών με AWS Cognito - (1/3) Αρχική ρύθμιση

The Complete AWS Web Boilerplate - Tutorial 1A

Κύριος πίνακας περιεχομένων Κάντε κλικ εδώ Μέρος Α: Αρχική ρύθμιση Μέρος Β: Η βασική λειτουργικότητα Μέρος Γ: Τελευταία βήματα για την πλήρη αναβάθμιση

Κατεβάστε το Github εδώ.

Εισαγωγή

Η ρύθμιση του ελέγχου ταυτότητας χρήστη μπορεί να διαρκέσει πολλά χρόνια, αλλά αποτελεί βασικό ακρογωνιαίο λίθο οποιασδήποτε εφαρμογής παραγωγής. Υπάρχουν επιλογές εκεί έξω, όπως το AuthO και το PassportJS, αλλά έχουν είτε καμπύλες σκληρής μάθησης, απαιτούν συνεχή συντήρηση ή είναι ευάλωτοι σε σφάλματα προγραμματιστή καθώς απαιτούν αυτόματη ρύθμιση. Εάν υπήρχε μόνο μια υπηρεσία διαχείρισης χρηστών hands-off, προσαρμόσιμη, ασφαλής και εξαιρετικά επεκτάσιμη στο cloud.

Παρουσιάζοντας το Amazon Cognito και τις ομοσπονδιακές ταυτότητες. Το Cognito είναι η λύση AWS για τη διαχείριση προφίλ χρηστών και οι Ομοσπονδιακές ταυτότητες συμβάλλουν στην παρακολούθηση των χρηστών σας σε πολλές συνδέσεις. Ενσωματωμένο στο οικοσύστημα AWS, το AWS Cognito ανοίγει έναν κόσμο πιθανότητας για προηγμένη ανάπτυξη front end, καθώς οι ρόλοι Cognito + IAM σάς παρέχουν επιλεκτική ασφαλή πρόσβαση σε άλλες υπηρεσίες AWS. Θέλετε να επιτρέψετε μόνο την πρόσβαση στο S3 Bucket σε συγκεκριμένους συνδεδεμένους χρήστες; Απλώς συνδέστε μια σύνδεση Cognito με έναν ρόλο IAM που επιτρέπει την πρόσβαση στον κάδο και τώρα ο κάδος σας είναι ασφαλής! Το καλύτερο από όλα, το δωρεάν επίπεδο σας δίνει 50.000 μηνιαίους ενεργούς χρήστες, οπότε δεν θα χρειάζεται να ανησυχείτε για την πληρωμή περισσότερων έως ότου είστε έτοιμοι να ανεβείτε.

Αυτό το boilerplate είναι μια διαδικτυακή εφαρμογή React-Redux που διαθέτει όλες τις δυνατότητες των AWS Cognito και Federated Identities που έχουν ενσωματωθεί. Χρησιμοποιήστε αυτό το boilerplate εάν έχετε μια εφαρμογή που θέλετε να δημιουργήσετε με μια υπηρεσία ελέγχου ταυτότητας έτοιμη για παραγωγή από την αρχή. Πράγματι, αυτό είναι ένα ισχυρό launchpad για την επόμενη υπέροχη ιδέα σας.

Για να ξεκινήσετε, μεταβείτε στο AWS Cognito στην κονσόλα AWS!

Αρχική Ρύθμιση - Cognito

Θα δημιουργήσουμε το AWS Cognito, το οποίο είναι μια προσαρμοσμένη ομάδα σύνδεσης (όπως σύνδεση με email). Το Cognito ΔΕΝ είναι διαχειριστής σύνδεσης για οποιονδήποτε τύπο σύνδεσης (όπως Facebook και Gmail), μόνο για προσαρμοσμένες συνδέσεις.

Ας δημιουργήσουμε πρώτα ένα σύνολο χρηστών κάνοντας κλικ στο "Διαχείριση των ομάδων χρηστών". Η ομάδα χρηστών είναι μια ομάδα χρηστών που πληρούν την ίδια ονομασία. Εάν φτιάχνατε έναν κλώνο Uber, θα φτιάχνατε 2 ομάδες χρηστών - μία για οδηγούς και μία για αναβάτες. Προς το παρόν, ας δημιουργήσουμε ένα νέο σύνολο χρηστών που ονομάζεται "App_Users". Η οθόνη εγκατάστασης θα πρέπει να έχει την εξής μορφή:

Θα ακολουθήσουμε αυτήν τη διαδικασία βήμα προς βήμα, οπότε εισαγάγετε το όνομα Pool των "App_Users" και κάντε κλικ στο "Step through Settings". Το επόμενο βήμα είναι "Χαρακτηριστικά", όπου καθορίζουμε τα χαρακτηριστικά που θα έχουν οι "Εφαρμογές_ Χρήστες".

Τώρα, θέλουμε μόνο να έχουμε ένα email, έναν κωδικό πρόσβασης και το "agentName". Το email είναι το μοναδικό αναγνωριστικό μας για έναν χρήστη και ο κωδικός πρόσβασης είναι υποχρεωτικό πεδίο (γι 'αυτό δεν το βλέπετε στη λίστα των τυπικών χαρακτηριστικών). Θέλουμε οι χρήστες να μπορούν να έχουν ένα κωδικό όνομα για να περάσουν, οπότε ας ρυθμίσουμε το "agentName" είναι ένα προσαρμοσμένο χαρακτηριστικό. Χρησιμοποιούμε μόνο το "agentName" για να δείξουμε πώς να προσθέσουμε προσαρμοσμένα χαρακτηριστικά. Κάντε κύλιση προς τα κάτω και θα δείτε την επιλογή προσθήκης προσαρμοσμένων χαρακτηριστικών.

Από την ημερομηνία σύνταξης αυτού του σεμιναρίου, δεν μπορείτε να επιστρέψετε και να αλλάξετε τα προσαρμοσμένα χαρακτηριστικά (παρόλο που το AWS φαίνεται να μπορεί), οπότε φροντίστε να το πάρετε σωστά την πρώτη φορά! Εάν πρέπει να αλλάξετε χαρακτηριστικά, θα πρέπει να δημιουργήσετε ένα νέο σύνολο χρηστών. Ας ελπίσουμε ότι το AWS θα διορθώσει αυτό το ζήτημα σύντομα. Τέλος πάντων, προχωρώντας στις πολιτικές λογαριασμού!

Μπορούμε λοιπόν να δούμε ότι οι κωδικοί πρόσβασης μπορούν να επιβληθούν ώστε να απαιτούν συγκεκριμένους χαρακτήρες. Προφανώς η απαίτηση ενός συνδυασμού διαφόρων τύπων χαρακτήρων θα ήταν πιο ασφαλής, αλλά οι χρήστες συχνά δεν τους αρέσει. Για μεσαίο έδαφος, ας απαιτήσουμε απλώς τον κωδικό πρόσβασης να έχει μήκος 8+ χαρακτήρες και να περιλαμβάνει τουλάχιστον 1 αριθμό. Θέλουμε επίσης οι χρήστες να μπορούν να εγγραφούν. Τα άλλα μέρη δεν είναι τόσο σημαντικά, οπότε ας προχωρήσουμε στο επόμενο βήμα: επαληθεύσεις.

Αυτό το μέρος είναι υπέροχο, μπορούμε εύκολα να ενσωματώσουμε τον έλεγχο ταυτότητας πολλών παραγόντων (MFA). Αυτό σημαίνει ότι οι χρήστες πρέπει να εγγραφούν με ένα email καθώς και με άλλη μορφή ελέγχου ταυτότητας, όπως έναν αριθμό τηλεφώνου. Ένα PIN θα σταλεί σε αυτόν τον αριθμό τηλεφώνου και ο χρήστης θα τον χρησιμοποιούσε για να επαληθεύσει τον λογαριασμό του. Δεν θα χρησιμοποιούμε MFA σε αυτό το σεμινάριο, απλώς επαλήθευση μέσω email. Ορίστε το MFA σε "απενεργοποίηση" και ελέγξτε μόνο το "Email" ως μέθοδο επαλήθευσης Μπορούμε να αφήσουμε το "AppUsers-SMS-Role" (ρόλος IAM) που έχει συμπληρωθεί, καθώς δεν θα το χρησιμοποιήσουμε αλλά ενδέχεται να το χρησιμοποιήσουμε στο μέλλον. Το Cognito χρησιμοποιεί αυτόν τον ρόλο IAM για εξουσιοδότηση για την αποστολή μηνυμάτων κειμένου SMS που χρησιμοποιούνται στο MFA. Εφόσον δεν χρησιμοποιούμε MFA, μπορούμε να προχωρήσουμε στο: Προσαρμογές μηνυμάτων.

Όταν οι χρήστες λαμβάνουν τα μηνύματα ηλεκτρονικού ταχυδρομείου επαλήθευσης λογαριασμού τους, μπορούμε να καθορίσουμε τι περιλαμβάνει αυτό το μήνυμα ηλεκτρονικού ταχυδρομείου. Εδώ δημιουργήσαμε ένα προσαρμοσμένο μήνυμα ηλεκτρονικού ταχυδρομείου και τοποθετήσαμε μέσω προγραμματισμού στο PIN επαλήθευσης που αναπαριστάται ως {####}. Δυστυχώς, δεν μπορούμε να μεταφέρουμε άλλες μεταβλητές, όπως έναν σύνδεσμο επαλήθευσης. Για να το πετύχουμε αυτό, θα πρέπει να χρησιμοποιήσουμε έναν συνδυασμό AWS Lambda και AWS SES.

Κάντε κύλιση προς τα κάτω στη σελίδα στο βήμα Προσαρμογές μηνυμάτων και μπορούμε να προσθέσουμε τις δικές μας προεπιλεγμένες διευθύνσεις FROM και REPLY-TO. Για να γίνει αυτό, πρέπει να επαληθεύσουμε ένα μήνυμα ηλεκτρονικού ταχυδρομείου στο AWS SES, το οποίο είναι εύκολο και εξαιρετικά γρήγορο να ρυθμιστεί. Σε μια νέα καρτέλα, μεταβείτε στην αρχική σελίδα της κονσόλας AWS κάνοντας κλικ στον πορτοκαλί κύβο πάνω αριστερά. Στην αρχική σελίδα της κονσόλας, αναζητήστε το SES (Simple Email Service). Κάντε κλικ για να μεταβείτε στη σελίδα SES και, στη συνέχεια, κάντε κλικ στο σύνδεσμο Διευθύνσεις ηλεκτρονικού ταχυδρομείου στο αριστερό μενού.

Στη συνέχεια, κάντε κλικ στην επιλογή "Επαλήθευση νέας διεύθυνσης" και εισαγάγετε το email που θέλετε να επαληθεύσετε.

Τώρα συνδεθείτε στο email σας και ανοίξτε το email από το AWS. Κάντε κλικ στον σύνδεσμο μέσα στο email για επαλήθευση και θα μεταφερθείτε ξανά στη σελίδα AWS SES. Επιβεβαιώσατε με επιτυχία ένα email! Αυτό ήταν εύκολο.

Τώρα που έχει γίνει, ας επιστρέψουμε στο AWS Cognito και προχωρήσουμε στο: Tags.

Δεν είναι υποχρεωτική η προσθήκη ετικετών σε μια ομάδα χρηστών, αλλά είναι σίγουρα χρήσιμο για τη διαχείριση πολλών υπηρεσιών AWS. Ας προσθέσουμε απλώς μια ετικέτα για το «AppName» και να την ορίσουμε στην τιμή του «MyApp». Μπορούμε τώρα να προχωρήσουμε σε: Συσκευές.

Μπορούμε να επιλέξουμε να θυμόμαστε τις συσκευές του χρήστη μας. Συνήθως επιλέγω "Πάντα" επειδή η ανάμνηση των συσκευών χρήστη είναι δωρεάν και δεν απαιτεί κωδικοποίηση από την πλευρά μας. Οι πληροφορίες είναι επίσης χρήσιμες, οπότε γιατί όχι; Επόμενο βήμα: Εφαρμογές.

Θέλουμε ορισμένες εφαρμογές να έχουν πρόσβαση στην ομάδα χρηστών μας. Αυτές οι εφαρμογές δεν υπάρχουν πουθενά αλλού στο οικοσύστημα AWS, πράγμα που σημαίνει ότι όταν δημιουργούμε μια «εφαρμογή», ​​είναι ένα αναγνωριστικό μόνο για Cognito. Οι εφαρμογές είναι χρήσιμες επειδή μπορούμε να έχουμε πολλές εφαρμογές που έχουν πρόσβαση στην ίδια ομάδα χρηστών (φανταστείτε μια εφαρμογή Uber clone και μια δωρεάν εφαρμογή πρακτικής δοκιμής οδήγησης). Θα ορίσουμε το διακριτικό ανανέωσης σε 30 ημέρες, πράγμα που σημαίνει ότι κάθε προσπάθεια σύνδεσης θα επιστρέψει ένα διακριτικό ανανέωσης που μπορούμε να χρησιμοποιήσουμε για έλεγχο ταυτότητας αντί να συνδεόμαστε κάθε φορά. Καταργούμε το κλικ «Δημιουργία μυστικού πελάτη» επειδή σκοπεύουμε να συνδεθούμε στην ομάδα χρηστών μας από το μπροστινό μέρος αντί για το πίσω μέρος (ergo, δεν μπορούμε να κρατήσουμε μυστικά στο μπροστινό μέρος, επειδή αυτό είναι ανασφαλές). Κάντε κλικ στο "Δημιουργία εφαρμογής" και στη συνέχεια στο "Επόμενο βήμα" για να προχωρήσετε στο: Triggers.

Μπορούμε να ενεργοποιήσουμε διάφορες ενέργειες στον έλεγχο ταυτότητας χρήστη και στη ροή εγκατάστασης. Θυμηθείτε πώς είπαμε ότι μπορούμε να δημιουργήσουμε πιο σύνθετα μηνύματα επαλήθευσης λογαριασμού χρησιμοποιώντας τα AWS Lambda και AWS SES; Εδώ θα το ρυθμίσουμε. Για το πεδίο αυτού του σεμιναρίου, δεν θα χρησιμοποιούμε κανείς AWS Lambda triggers. Ας προχωρήσουμε στο τελικό βήμα: Επανεξέταση.

Εδώ εξετάζουμε όλες τις διαμορφώσεις εγκατάστασης που έχουμε κάνει. Εάν είστε βέβαιοι για αυτές τις πληροφορίες, κάντε κλικ στο "Δημιουργία ομάδας" και θα δημιουργηθεί η ομάδα χρηστών Cognito!

Σημειώστε το αναγνωριστικό πισίνας us-east-1_6i5p2Fwaoστην καρτέλα Λεπτομέρειες πισίνας.

Και το αναγνωριστικό πελάτη εφαρμογής 5jr0qvudipsikhk2n1ltcq684bστην καρτέλα Εφαρμογές. Θα χρειαστούμε και τα δύο στην εφαρμογή πελάτη μας.

Τώρα που έχει ρυθμιστεί το Cognito, μπορούμε να δημιουργήσουμε Ομοσπονδιακές ταυτότητες για πολλούς παρόχους σύνδεσης. Σε αυτό το σεμινάριο δεν καλύπτουμε τις ιδιαιτερότητες της σύνδεσης FB καθώς δεν εμπίπτει στο πεδίο αυτής της σειράς σεμιναρίων. Ωστόσο, η ενσωμάτωση του FB Login είναι εξαιρετικά εύκολη και θα δείξουμε πώς γίνεται στην παρακάτω ενότητα.

Αρχική ρύθμιση - Ομόσπονδες ταυτότητες

Στη συνέχεια θέλουμε να ρυθμίσουμε το "Federated Identities". Εάν έχουμε μια εφαρμογή που επιτρέπει πολλαπλούς παρόχους σύνδεσης (Amazon Cognito, Facebook, Gmail..etc) στον ίδιο χρήστη, θα χρησιμοποιούσαμε τις Ομοσπονδιακές ταυτότητες για να συγκεντρώσουμε όλες αυτές τις συνδέσεις. Σε αυτό το σεμινάριο, θα χρησιμοποιούμε τόσο τη σύνδεσή μας στο Amazon Cognito, όσο και μια πιθανή σύνδεση στο Facebook. Μεταβείτε στο Federated Identities και ξεκινήστε τη διαδικασία για να δημιουργήσετε μια νέα ομάδα ταυτότητας. Δώστε το κατάλληλο όνομα.

Τώρα επεκτείνετε την ενότητα "Πάροχοι ελέγχου ταυτότητας" και θα δείτε την παρακάτω οθόνη. Στο Cognito, θα προσθέσουμε το Cognito User Pool που μόλις δημιουργήσαμε. Αντιγράψτε και επικολλήστε το User Pool ID και το App Client ID που σημειώσαμε νωρίτερα.

Και αν θέλαμε να συνδεθείτε στο Facebook για την ίδια ομάδα ταυτότητας χρήστη, μπορούμε να μεταβούμε στην καρτέλα Facebook και απλά να εισάγουμε το Facebook App ID. Αυτό είναι το μόνο που υπάρχει στην κονσόλα AWS!

Αποθηκεύστε το σύνολο ταυτότητας και θα ανακατευθυνθείτε στην παρακάτω οθόνη όπου δημιουργούνται ρόλοι IAM για να αντιπροσωπεύουν το Federated Identity Pool. Ο μη εξουσιοδοτημένος ρόλος IAM είναι για μη συνδεδεμένους χρήστες και η επικυρωμένη έκδοση είναι για συνδεδεμένους χρήστες. Μπορούμε να παραχωρήσουμε σε αυτούς τους ρόλους IAM άδεια για πρόσβαση σε άλλους πόρους AWS, όπως κάδοι S3 και παρόμοια. Έτσι επιτυγχάνουμε μεγαλύτερη ασφάλεια ενσωματώνοντας την εφαρμογή μας σε όλο το οικοσύστημα AWS. Συνεχίστε να ολοκληρώσετε τη δημιουργία αυτού του Pool Identity.

Θα πρέπει τώρα να δείτε την παρακάτω οθόνη αφού δημιουργήσετε με επιτυχία τη συγκέντρωση ταυτότητας. Τώρα πρέπει μόνο να σημειώσετε ένα πράγμα που είναι το αναγνωριστικό συγκέντρωσης ταυτότητας (δηλ. us-east-1:65bd1e7d-546c-4f8c-b1bc-9e3e571cfaa7) Το οποίο θα χρησιμοποιήσουμε αργότερα στον κώδικά μας. Μεγάλος!

Βγείτε από όλα και επιστρέψτε στην κύρια οθόνη AWS Cognito. Εάν εισέλθουμε στην ενότητα Cognito ή στην ενότητα Federated Identities, βλέπουμε ότι έχουμε ρυθμίσει τις 2 απαραίτητες ομάδες. AWS Cognito και AWS Federated Identities είναι έτοιμα να ξεκινήσουν!

Αυτό είναι όλο για εγκατάσταση! Με αυτά τα 2 σύνολα μπορούμε να ενσωματώσουμε τον υπόλοιπο κώδικα στην πλήρη υπηρεσία ελέγχου ταυτότητας του Amazon και να επιτύχουμε κορυφαία διαχείριση χρηστών. Αυτό ήταν πολύ πιο εύκολο από το προσαρμοσμένο OAuth + Passport.js! Αν σας αρέσει αυτό που έχετε δει μέχρι τώρα, συνεχίστε να διαβάζετε! Θυμηθείτε ότι αφού το μάθετε αυτό μία φορά, θα είναι εξαιρετικά εύκολο στο μέλλον, οπότε αξίζει σίγουρα την επένδυση χρόνου. Τα λέμε στην επόμενη ενότητα!

Κύριος πίνακας περιεχομένων Κάντε κλικ εδώ Μέρος Α: Αρχική ρύθμιση Μέρος Β: Η βασική λειτουργικότητα Μέρος Γ: Τελευταία βήματα για πλήρη χρήση