Τι είναι το OAuth Connect και πώς να το χρησιμοποιήσετε
Πολλοί από εμάς έρχονται σε επαφή με το OAuth κατά την περιήγηση στον ιστό και οι περισσότεροι από εμάς δεν γνωρίζουν καν την ύπαρξή του. Το OAuth (Open Authentication) είναι ένα σύστημα το οποίο παρέχει στους ιστότοπους τρίτων μερών περιορισμένη πρόσβαση σε λογαριασμούς χρηστών, για παράδειγμα τους λογαριασμούς Twitter ή Facebook. Επιτρέπει στους επισκέπτες να αλληλεπιδρούν εντός του ιστότοπου χωρίς να απαιτείται νέα εγγραφή λογαριασμού ή να απελευθερώνουν το όνομα χρήστη και τον κωδικό πρόσβασής σας σε τρίτους.
Σε αυτόν τον οδηγό θα ήθελα να παρουσιάσω την έννοια του OAuth και πώς μπορεί να εφαρμοστεί στους προγραμματιστές. Υπάρχουν πολλές τεχνικές λεπτομέρειες που σχετίζονται με την εφαρμογή της δικής σας εφαρμογής OAuth. Το παράδειγμά μου θα γραφτεί στην PHP χρησιμοποιώντας ένα περιτύλιγμα βιβλιοθήκης Twitter, αλλά θα μπορούσατε να χρησιμοποιήσετε σχεδόν οποιοδήποτε δημοφιλές API προγραμματισμού από Python σε Ruby ή Objective-C.
Ακόμα κι αν η ιδέα αισθάνεται κρυπτική, προσπαθήστε να χωνέψετε όσο μπορείτε. Είναι ακόμα μια πολύ μυστηριώδης τεχνολογία, αφού έχει συνταχθεί μόλις το 2007. Σίγουρα δεν κατάλαβα πώς να αναπτύξω τις πλήρεις συνδέσεις του OAuth ακόμα και μετά τα πρώτα μου σεμινάρια, αλλά αν το κολλήσετε, θα τα πιάσετε γρήγορα. Τώρα πρώτα να ξεκλειδώσετε τα πράγματα, μια μικρή εισαγωγή!
Ποια προβλήματα μπορούμε να λύσουμε?
Αν σκεφτείτε πόσο πιο συνδεδεμένο το Internet έχει γίνει, έχει νόημα μόνο ότι οι χρήστες θα θέλουν να μοιράζονται πληροφορίες μεταξύ πολλών λογαριασμών από το Facebook σε Twitter, Tumblr, Foursquare και τώρα ακόμη και σε εφαρμογές για κινητά όπως το Path ή το Instagram. Το πρόβλημα που αντιμετωπίζουμε τώρα είναι να το επιτύχουμε με τον ασφαλέστερο και απλούστερο τρόπο. Το OAuth 1.0 είναι μια προσπάθεια επίλυσης αυτού του προβλήματος και πολλών άλλων προβλημάτων, σε σύγκριση με τα παλαιότερα πρότυπα του OpenID. Οι χρήστες εξακολουθούν να εισάγουν το όνομα χρήστη / τον κωδικό πρόσβασης σε άλλους ιστότοπους τρίτων μόνο για να συνδεθούν στο OpenID. Αυτό δεν το καθιστά ασφαλέστερο για τον χρήστη. Σύμφωνα με τις προδιαγραφές OAuth, ο χρήστης δεν χρειάζεται ποτέ να αποθηκεύσει δεδομένα προσωπικού λογαριασμού σε βάση δεδομένων τρίτου μέρους.
(Εικόνα Πηγή: Martin Hassman)
Με το OAuth, ο κύριος πάροχος λογαριασμού (π.χ. Twitter, Facebook) θα σας ανακατευθύνει πρώτα (χρήστης) σε μια σελίδα εξουσιοδότησης. Ο χρήστης συνδέεται στη συνέχεια στο κύριο δίκτυο και στη συνέχεια είτε δέχεται είτε αρνείται μια νέα σύνδεση στον ιστότοπο τρίτου μέρους. Η τεχνολογία είναι ανώδυνα εύκολη και μπορείτε πάντα να εξουσιοδοτείτε τις συνδέσεις από τις ρυθμίσεις του λογαριασμού σας σε οποιοδήποτε σημείο. Παρατηρήστε ότι ο κωδικός πρόσβασης σας δεν δίνεται ποτέ στον τρίτο που καθιστά το πρωτόκολλο αυτό πολύ πιο ασφαλές από το αντίστοιχο.
Πώς λειτουργεί η διαδικασία
Υπάρχουν 3 μέρη που πρέπει να λάβετε υπόψη σε μια τυπική κλήση OAuth:
- Πάροχος υπηρεσιών - Το κύριο δίκτυο που προσπαθείτε να τραβήξετε δεδομένα από. Παρέχουν την απάντηση API όπως το όνομα χρήστη, την εικόνα προφίλ, τη διεύθυνση URL του ιστότοπου και άλλα στοιχεία.
- Καταναλωτής - Η εφαρμογή τρίτου μέρους που επιθυμεί να λαμβάνει δεδομένα. Αυτός θα είναι ο ιστότοπος ή η εφαρμογή για κινητά που κάνουν την αρχική αίτηση σύνδεσης και στη συνέχεια χειρίζονται επίσης τα δεδομένα επιστροφής μετά την εξουσιοδότηση.
- Χρήστης - Το πρόσωπο που κάθεται πίσω από τον υπολογιστή που αλληλεπιδρά με τους ιστοτόπους που θα ήταν εσύ!
Ο σκοπός του OAuth δεν είναι να παρέχει μια συγκεκριμένη βιβλιοθήκη για χρήση ιστοσελίδων. Στην πραγματικότητα δημιουργεί το “κανόνες” για την κατασκευή ενός API ανοικτού πρωτοκόλλου. Έτσι, ενώ όλοι μπορούμε να επωφεληθούμε από αυτήν την τεχνολογία, είναι στην πραγματικότητα προγραμματιστές που θα βρουν πραγματικά ενδιαφέρον για αυτόν τον τομέα. Εάν χρειάζεστε περισσότερες πληροφορίες δείτε την αναθεωρημένη έκδοση v1.0 που κυκλοφόρησε τον Απρίλιο του 2010.
Αντιμετώπιση της ασφάλειας
Η όλη διαδικασία απαιτεί τελικά 2 διαφορετικά πλήκτρα μαζί με ένα αναγνωριστικό πρόσβασης. Τα κλειδιά παρέχονται από την υπηρεσία root μετά την εγγραφή μιας εφαρμογής - αυτά είναι γνωστά ως σας πελάτης και μυστικό αναγνωριστικό. Το αναγνωριστικό πελάτη διαβιβάζεται γενικά στη διεύθυνση URL ελέγχου ταυτότητας, ώστε ο διακομιστής να μπορεί να αναγνωρίσει την εφαρμογή σας.
Το μυστικό αναγνωριστικό διατηρείται στον κώδικά σας, οπότε ο διακομιστής μπορεί να επαληθεύσει την ταυτότητα της εφαρμογής σας. Ομοίως, ο απομακρυσμένος διακομιστής θα ταυτίσει το μυστικό σας αναγνωριστικό με το δικό του, έτσι ώστε να μην στείλετε εσφαλμένα αίτηση twitter στο API του Facebook ή το αντίστροφο. Εάν ο χρήστης εξουσιοδοτήσει τη σύνδεση και όλα τα κλειδιά ταιριάζουν, τότε επιστρέφονται στον ιστότοπό σας με ένα μεγάλο αριθμό τυχαίων αριθμών και γραμμάτων.
Αυτός ο κώδικας χρησιμοποιείται για τη δημιουργία ενός νέου διακριτικό πρόσβασης. Αυτές συμπεριφέρονται παρόμοια με μια μεταβλητή περιόδου σύνδεσης που μπορείτε να αποθηκεύσετε σε ένα cookie για να διατηρήσετε τον χρήστη συνδεδεμένο στον ιστότοπό σας. Η μόνη διαφορά είναι ότι πολλές υπηρεσίες θα στείλουν πίσω το Token Access και το Token Secret Access. Ίσως χρειαστεί και τα δύο να τραβήξουν οποιαδήποτε δεδομένα από το διακομιστή. Ένα παράδειγμα θα μπορούσε να ζητήσει τη φωτογραφία προφίλ του χρήστη για να αποθηκεύσει ένα αντίγραφο στον δικό σας ιστότοπο.
Παράδειγμα βιβλιοθήκης για το Twitter OAuth
Οι προγραμματιστές δεν είναι συχνά πιθανό να ξεκινήσουν από το μηδέν, οπότε γιατί να μην εξετάσουμε μια βιβλιοθήκη που κατασκευάστηκε προηγουμένως; Αυτό θα μας σώσει τον χρόνο μας, και από πονοκεφάλους, όταν δουλεύουμε με την PHP. Ας δούμε να φτιάχνουμε ένα πραγματικά απλό παράδειγμα πάνω από το API Twitter.
Συνιστώ ανεπιθύμητα το Twitter Async από τον Jaisen Mathai στο GitHub. Λειτουργεί τέλεια και παρέχει ακόμα μερικούς πολύ απλούς κώδικες παραδείγματος που μπορούμε να δούμε. Μπορείτε να κατεβάσετε το .zip για τώρα, αλλά πριν κοιτάξουμε τον κώδικα πρέπει να εγγραφείτε και να λάβουμε τα αναγνωριστικά της εφαρμογής μας από το Twitter.
Καταχώριση νέας εφαρμογής
Το Κέντρο Twitter Dev είναι μια μεγάλη πηγή για όσους μόλις ξεκινήσαμε στο API. Έχει γραφτεί και ξαναγραφεί πολλές φορές μέσα σε λίγα χρόνια. Η σελίδα που θέλουμε είναι https://dev.twitter.com/apps/new. Θα σας ζητήσει να συνδεθείτε πρώτα, τότε θα πρέπει να εισαγάγετε ορισμένα διαπιστευτήρια για μια νέα εφαρμογή.
Το όνομα της εφαρμογής και η περιγραφή εμφανίζονται όταν ο χρήστης πηγαίνει να εξουσιοδοτήσει με το Twitter. Η διεύθυνση URL ιστού σας είναι επίσης σημαντική για να διακρίνετε τη διεύθυνση τρίτου μέρους. Θα ήταν ευκολότερο να δουλέψετε με έναν ζωντανό τομέα, αν και μπορείτε να χρησιμοποιήσετε το localhost για έλεγχο, αλλά δεν αποθαρρύνω αυτή τη μέθοδο. Είναι εξίσου εύκολο να εγγραφείτε για έναν δωρεάν κεντρικό υπολογιστή και να εκτελέσετε τα σενάρια σας από εκεί.
Η διεύθυνση URL επαναφοράς αναφέρεται ως ο τελικός προορισμός αφού οι επισκέπτες σας είτε αποδεχτούν είτε αρνηθούν την εξουσιοδότηση. Είναι δική σας δουλειά ως προγραμματιστής να διαβάσετε την απάντηση από το Twitter και να εξάγετε ένα μήνυμα ανάλογα. Στη βιβλιοθήκη Async έχουμε ήδη λάβει ορισμένα διαπιστευτήρια, αλλά δεν θα λειτουργήσουν αφού η διεύθυνση URL επαναφοράς έχει οριστεί σε ένα εξωτερικό ιστολόγιο. Εάν ενδιαφέρεστε να δημιουργήσετε μια πλήρως συνδεδεμένη εφαρμογή Web OAuth, έχω συμπεριλάβει μερικά λεπτομερή σεμινάρια παρακάτω.
Ελέγξτε τον κώδικα
Εάν χρησιμοποιείτε έναν απομακρυσμένο κεντρικό υπολογιστή, ίσως θελήσετε να αποσυμπιέσετε τις βιβλιοθήκες Async και να τις μεταφορτώσετε σε έναν νέο κατάλογο. Διαφορετικά, μπορείτε απλά να ελέγξετε τον πηγαίο κώδικα. Είναι πιθανό ότι δεν θα είμαστε σε θέση να τραβήξουμε μια νέα σύνδεση ούτως ή άλλως. Αλλά η πρακτική εμπειρία με τη μεταφόρτωση και επεξεργασία πηγαίου κώδικα είναι πάντα μια διαδικασία μάθησης.
Στον ριζικό κατάλογο θα βρείτε ένα script που ονομάζεται simpleTest.php. Στο εσωτερικό υπάρχουν πολλοί κώδικες PHP που σχετίζονται με τις βιβλιοθήκες του OAuth που περιλαμβάνονται. Δεν θα μπορέσω να τα βάλω όλα μαζί, αλλά θα πρέπει να εξετάσουμε ένα σημαντικό μπλοκ κώδικα για να εντοπίσουμε τα αξιοσημείωτα στοιχεία.
Υπάρχουν 4 πολύ σημαντικές μεταβλητές για το κλειδί του καταναλωτή και το μυστικό ID, μαζί με το αναγνωριστικό συμβολικής ταυτότητας και το μυστικό αναγνωριστικό. Δεν είναι όλες οι υπηρεσίες API που απαιτούν αυτό το σύνολο 4, αλλά είναι κατάλληλο πρωτόκολλο OAuth. Η κλάση EpiTwitter απαιτεί όλες τις 4 τιμές ως παραμέτρους και δημιουργεί τη διεύθυνση URL σύνδεσης στο Twitter.
https://api.twitter.com/oauth/authorize?oauth_token=TOKEN_ID_HERE
Με αυτήν τη νέα δυναμική διεύθυνση URL μπορείτε να δημιουργήσετε ένα κουμπί σύνδεσης για τους χρήστες σας. Αυτό θα τους κατευθύνει πρώτα σε μια ασφαλή σελίδα API Twitter όπου ο χρήστης είτε δέχεται είτε αρνείται τη σύνδεσή σας. Ανεξάρτητα από την επιλογή τους, ο χρήστης θα μεταφερθεί ξανά στη διεύθυνση URL της επιστροφής κλήσης της εφαρμογής σας. Το όλο ανοιχτό πρωτόκολλο έχει μια πολύ καθαρή προοπτική που επιτρέπει την ταχεία ανάπτυξη, ειδικά με τις βιβλιοθήκες διαθέσιμες σχεδόν σε κάθε γλώσσα.
σχετικοί σύνδεσμοι
- hueniverse oauth 1.0 οδηγός
- Απαλή εισαγωγή στο OAuth
- OAuth FAQ
- Οδηγός διαχειριστή Facebook Authentication
- Απλή Twitter OAuth Signin
- Χρήση του OAuth με το Twitter στο Cocoa Objective-C
- Καταναλώντας το OAuth έξυπνα στις ράγες
συμπέρασμα
Ας ελπίσουμε ότι αυτή η εισαγωγή στο OAuth σας ενδιέφερε να δημιουργήσετε εφαρμογές για το πρωτόκολλο. Πολλοί προγραμματιστές προσπαθούν να βρουν μια τέτοια λύση και το OAuth 2.0 μπορεί να είναι το μέλλον των διασυνδεδεμένων κοινωνικών δικτύων. Έχω ήδη χρησιμοποιήσει πάνω από δύο δωδεκάδες συνδέσεις στο λογαριασμό μου Twitter και έχουν πραγματικά εντυπωσιαστεί με την τεκμηρίωση του προγραμματιστή!
Είναι σαφές ότι υπάρχουν πολλά που πρέπει να πούμε σε αυτό το θέμα. Δεν είναι κάτι που μπορεί να επεξεργαστείτε πλήρως σε μια συνεδρίαση. Περιηγηθείτε στο δίκτυο για περισσότερες λύσεις OAuth και ενημερώστε μας τις σκέψεις σας στην παρακάτω περιοχή συζήτησης.