Πώς να χορέψετε το OAuth: ένα μάθημα βήμα προς βήμα

Πέντε, έξι, επτά, οκτώ!

Τις περισσότερες φορές προσπαθώ να μάθω κάτι καινούργιο και να το εφαρμόσω στην πράξη, αρχίζω γρήγορα να νιώθω σαν να χάνομαι σε μια μυριάδα χορευτικών κινήσεων. Προσπαθώ απεγνωσμένα να βρω τον σωστό τρόπο για να κάνω τα πράγματα, ενώ δεν καταλαβαίνω πραγματικά τι συμβαίνει ή πώς κατέληξα στο λάθος μέρος του δωματίου ...

Απλά δοκιμάστε τα πράγματα μέχρι να λειτουργήσει κάτι.

Ίσως οφείλεται στον τρόπο με τον οποίο δουλεύει η διαδικασία εκμάθησης μου, ή ίσως οδηγοί και σεμινάρια απευθύνονται σε πιο έμπειρους ή τεχνικούς. Αλλά, αφού τελειώσω το κεφάλι μου γύρω από το θέμα, πάντα αισθάνομαι ότι θα πρέπει να υπάρχει ένας εύκολος οδηγός για την κατανόηση των βασικών εννοιών και την ευκολότερη εφαρμογή τους σε ένα έργο.

Έτσι αυτή τη φορά, αποφάσισα να σταματήσω να το επιθυμώ και να το κάνω μόνος μου, χρησιμοποιώντας το τελευταίο πράγμα που έμαθα.

Και το πράγμα ήταν το OAuth 2.0.

Τι είναι το OAuth;

Ας ξεκινήσουμε με τα βασικά: OAuth σημαίνει ανοικτή εξουσιοδότηση. Πρόκειται για μια διαδικασία μέσω της οποίας μια εφαρμογή ή ένας ιστότοπος μπορούν να έχουν πρόσβαση σε δεδομένα ιδιωτών χρηστών από άλλον ιστότοπο.

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

Έχετε ήδη χρησιμοποιήσει αυτό τουλάχιστον ένα χρόνο gazillion, στην πραγματικότητα το χρησιμοποιείτε κάθε φορά που κάνετε κλικ στο "Σύνδεση με Facebook / Google / GitHub / ...". Έπειτα, εμφανίστηκε μια οθόνη συγκατάθεσης που έδειξε ποιες πληροφορίες προέρχονται από το προφίλ σας στο Facebook (για παράδειγμα ας πούμε) ότι επιτρέπετε ότι το-hot-new-app.com διαβάζει (και μερικές φορές γράφει). Μετά από αυτό, καθώς αυτό-hot-new-app.com εμπιστεύεται την ταυτότητα που παρέχεται από το Facebook, μπορούν να δημιουργήσουν ένα προφίλ για εσάς στη βάση δεδομένων τους χρησιμοποιώντας τα δεδομένα που έλαβαν.

Η επικοινωνία μεταξύ του -hot-new-app.com και του Facebook τελειώνει συνήθως εδώ. Αυτός είναι ο λόγος για τον οποίο η εικόνα του προφίλ σας δεν θα αλλάξει σε όλο το Διαδίκτυο, αν την αλλάξετε στο Facebook. Ποτέ δεν επιστρέφουν ποτέ στο Facebook και ζητούν ενημερωμένα στοιχεία.

Όταν οι ρυθμοί marimba αρχίζουν να παίζουν ...

Υπάρχει ένας άλλος σκοπός για την οικοδόμηση αυτού του είδους μηχανισμού, ένα με περισσότερες δυνατότητες: χρησιμοποιώντας τον πάροχο ταυτότητας ως πάροχο υπηρεσιών (σε συνεχή βάση). Αυτό σημαίνει ότι επικοινωνείτε μαζί του τακτικά για να παρέχετε βελτιωμένες λειτουργίες για τους χρήστες σας.

Ένα ωραίο παράδειγμα αυτού είναι το Relive, μια υπηρεσία που συνδέεται με διαφορετικές εφαρμογές παρακολούθησης αθλημάτων για τη δημιουργία βίντεο προβολής της Γης από το τρέξιμο ή τη διαδρομή σας. Κάθε φορά που ολοκληρώνετε μια δραστηριότητα, το Relive σας ζητά να προσφέρετε ένα βίντεο από αυτό. Εάν λέτε ναι, θα το επεξεργαστούν και θα σας ειδοποιήσουν όταν είναι έτοιμο για κοινωνικά μέσα ενημέρωσης να καυχηθούν ... εννοώ να μοιράζομαι

Δεν υπάρχει πραγματικά καμία τεχνική διαφορά μεταξύ αυτών των δύο χρήσεων. Αυτός είναι ο λόγος για τον οποίο θα πρέπει να είστε προσεκτικοί σχετικά με το πού συνδέεστε με τα social media ή το λογαριασμό σας στο Google / Gmail.

Μπορεί να ακούγεται τρομακτικό, αλλά δεν υπάρχει τίποτα να φοβηθούμε. Λάβετε υπόψη ότι εξουσιοδοτείτε τοhot-new-app.com να αποκτήσει πρόσβαση σε αυτές τις πληροφορίες σχετικά με εσάς, οι οποίες αναλύονται λεπτομερώς στην οθόνη συγκατάθεσης, ενδεχομένως σε επαναλαμβανόμενη βάση. Να γνωρίζετε τις άδειες που χορηγείτε και βεβαιωθείτε ότι γνωρίζετε πώς να τις απενεργοποιήσετε όποτε δεν αισθάνεστε πια εμπιστοσύνη.

Για παράδειγμα, αν χρησιμοποιείτε το λογαριασμό σας Google για να αποκτήσετε πρόσβαση στο that-hot-new-app.com, αλλά δεν θέλετε να το επιτρέψετε πια, μεταβείτε στις ρυθμίσεις του λογαριασμού σας Google και απενεργοποιήστε την πρόσβασή τους.

Όλοι οι κύριοι πάροχοι ταυτότητας προσφέρουν τον έλεγχο αυτού.

Εντάξει, αλλά πώς χορεύετε το OAuth;

Πριν προσγειωθείτε στο that-hot-new-app.com και ακόμη και κάντε κλικ στο "Σύνδεση με το YourFavoriteIdentityProvider", κάποιος - πιθανώς ένας προγραμματιστής - πρέπει να δημιουργήσει μια εφαρμογή στον ιστότοπο του παρόχου.

Αυτός είναι ένας τρόπος καταχώρησης του -hot-new-app.com έτσι ώστε, αργότερα, ο πάροχος να γνωρίζει ποιος ζητά ιδιωτικά δεδομένα.

Σε αυτό το βήμα, ο προγραμματιστής θα δημιουργήσει κάποιες πληροφορίες σχετικά με την εφαρμογή, όπως το όνομα της εφαρμογής ή τον ιστότοπο και - το σημαντικότερο - ένα URI ανακατεύθυνσης. Ο πάροχος (όπως το Google ή το Facebook) θα το χρησιμοποιήσει για να επικοινωνήσει με την αιτούσα εφαρμογή και να της πει ότι ο χρήστης είπε ναι

Σας υπόσχομαι ότι δεν θα χρειαστεί να το γράψετε με το χέρι, είμαστε υπερήφανοι για την ατελείωτη εργασία μας.

Μόλις γίνει η καταχώριση της εφαρμογής, ο πάροχος θα δώσει στον client-dat-new-app.com ένα clientId και ένα clientSecret που θα χρησιμοποιηθούν στις επικοινωνίες μεταξύ τους. Λειτουργούν σαν ένα όνομα χρήστη και κωδικό πρόσβασης για την εφαρμογή.

Θα λάβετε το clientID και το clientSecret αμέσως μόλις κάνετε κλικ στην επιλογή Αποθήκευση εφαρμογής

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

Δεν το θέλουμε.

Χέρια στα μέση ή στους ώμους

Εκτός από τη δημιουργία όλων αυτών των πραγμάτων, ο κύριος του έργου πρέπει να μάθει τι είδους δεδομένα παρέχει ο πάροχος και πώς είναι κατακερματισμένο.

Αυτά τα "τμήματα" είναι γνωστά ως πεδία και ορίζουν δικαιώματα πρόσβασης, συνήθως διαχωρισμένα σε κατηγορίες ανάγνωσης / εγγραφής. Έτσι, για παράδειγμα, ότι το-hot-new-app.com μπορεί να ζητήσει τη χρήση "προφίλ: ανάγνωση" και "επαφές: ανάγνωση". Αυτό σημαίνει ότι μπορούν να διαβάσουν ό, τι ο παροχέας αναθέτει στα τμήματα "προφίλ" και "επαφές". Άλλα πράγματα δεν θα είναι προσβάσιμα, όπως για παράδειγμα οι αναρτήσεις σας ή το περιεχόμενο που σας αρέσει.

Λοιπόν, απλώς και μόνο για να κάνουμε τα πράγματα απλά για τώρα, ας πούμε ότι that-hot-new-app.com είναι μια ιστοσελίδα που ενσωματώνει με Typeform, μια υπηρεσία για τη δημιουργία όμορφη και έξυπνη μορφές και επίσης η εταιρεία για την οποία εργάζομαι. Θέλετε σίγουρα το πιο καυτό πράγμα τώρα και γρήγορα, οπότε στον ιστότοπό σας κάντε κλικ στο "Σύνδεση με Τύπο" για να μπείτε στη δράση. Τι έπεται?

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

Πολύχρωμες σημειώσεις φέρνουν χαρά στην καρδιά μου

Εξουσιοδότηση: το πρώτο βήμα στο χορό OAuth

Λάβετε λοιπόν την πρωτοβουλία και κάντε κλικ στο "Σύνδεση με τύπο τύπου". Εδώ, that-hot-new-app.com (THNA από εδώ και πέρα, γιατί έχω κουραστεί να γράφω λέξεις που χωρίζονται από dash) θα σας στείλει στο τελικό σημείο εξουσιοδότησης (/ oauth / authorize) του Typeform και θα παρέχει:

  • το clientId (θυμηθείτε, αυτό είναι το όνομα χρήστη της THNA)
  • τα επιθυμητά πεδία (ή δικαιώματα πρόσβασης)
  • και το URI ανακατεύθυνσης τους ξανά (η Typeform το ξέρει ήδη από τη στιγμή που δημιουργήσαμε το όλο θέμα, αλλά το στέλνουμε και πάλι ως ένα επιπλέον επίπεδο ασφαλείας)

Αυτή η διεύθυνση URL θα μοιάζει κάπως έτσι:

διαφήμιση

Το Typeform θα χρησιμοποιήσει αυτές τις πληροφορίες για να δημιουργήσει μια οθόνη συγκατάθεσης, όπου μπορείτε να ελέγξετε τι είδους πράγματα εξουσιοδοτείτε να δείτε και να κάνετε.

Μόλις διαβάσετε λεπτομερώς τι συμφωνείτε και ευτυχώς κάντε κλικ στο "Να επιτρέπεται", το Typeform θα σας στείλει στο URI ανακατεύθυνσης με ένα προσωρινό, όπως έτσι:

https://that-hot-new-app.com/auth/redirect?code=xxxXXXxxxXXXxxx

Token: παίρνει 2 στο tangOAuth

Όλα αυτά μπροστά και πίσω αισθάνεστε σαν κάποιος να σας πάει για ένα γύρο ταγκό, σωστά;

Το δεύτερο βήμα του χορού OAuth είναι όταν το THNA λαμβάνει αυτόν τον κωδικό και το ανταλλάσσει για ένα OAuth Token.

Έτσι, ο THNA παίρνει αυτόν τον κώδικα και το στέλνει ξανά στο Typeform, μαζί με το URI ανακατεύθυνσης (ναι, πάλι!) Και το μυστικό πελάτη (αυτός είναι ο κωδικός πρόσβασης της εφαρμογής!).

Ως ανταμοιβή για ένα χορό χορεύεται καλά, το THNA θα έχει ένα λαμπερό OAuth Token το οποίο μπορεί να χρησιμοποιήσει για να αλληλεπιδράσει με το Typeform για λογαριασμό του χρήστη, δηλαδή ... εσύ!

Μείνε μαζί μου, κυριαρχεί μαζί μου

Από εδώ και στο εξής, σε κάθε αίτημα που κάνει το THNA στη διεύθυνση Typeform για λογαριασμό σας, θα πρέπει να συμπεριλάβει μια κεφαλίδα εξουσιοδότησης με αυτό το διακριτικό πρόσβασης. Με αυτό, το Typeform (ή οποιοσδήποτε άλλος παροχέας) μπορεί να αναγνωρίσει:

  • ποιος ζητά τα δεδομένα (σε αυτή την περίπτωση, THNA)
  • ποιοι είναι τα δεδομένα για (εσύ!)
  • και βεβαιωθείτε επίσης ότι έχουν τη σωστή εξουσιοδότηση για την πρόσβαση στα δεδομένα αυτά (μόνο όσα συμφωνήσατε).

Έτοιμο για το πάτωμα χορού

Τώρα που γνωρίζετε όλα τα βήματα και τις περιστροφές της τεχνικής χορού OAuth, πρέπει να είστε έτοιμοι να δημιουργήσετε τις δικές σας χορογραφίες, εννοώ τις ενσωματώσεις, και να κάνετε το Διαδίκτυο ακόμα μεγαλύτερη.

Σχέδια από την αληθινή σου, καλύψτε φωτογραφία από τον Gez Xavier Mansfield στο Unsplash.