Ένας εικονογραφημένος οδηγός για το OAuth και το OpenID Connect

Σημείωση. μετάφρ.: Αυτό το υπέροχο άρθρο της Okta εξηγεί πώς λειτουργούν το OAuth και το OIDC (OpenID Connect) με απλό και ξεκάθαρο τρόπο. Αυτή η γνώση θα είναι χρήσιμη για προγραμματιστές, διαχειριστές συστημάτων, ακόμη και «τακτικούς χρήστες» δημοφιλών διαδικτυακών εφαρμογών, οι οποίοι πιθανότατα ανταλλάσσουν επίσης εμπιστευτικά δεδομένα με άλλες υπηρεσίες.

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

Ένας εικονογραφημένος οδηγός για το OAuth και το OpenID Connect
«Δώσε μου τον τραπεζικό σου λογαριασμό». «Υποσχόμαστε ότι όλα θα πάνε καλά με τον κωδικό πρόσβασης και τα χρήματα. Αυτό είναι ειλικρινές, ειλικρινές!». *Hee hee*

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

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

Ένας εικονογραφημένος οδηγός για το OAuth και το OpenID Connect

Παρεμπιπτόντως, αυτός ο οδηγός είναι διαθέσιμος και σε μορφή βίντεο:

Κυρίες και κύριοι, καλώς ήρθατε: OAuth 2.0

OAuth 2.0 είναι ένα πρότυπο ασφαλείας που επιτρέπει σε μια εφαρμογή να αποκτήσει άδεια πρόσβασης σε πληροφορίες σε άλλη εφαρμογή. Ακολουθία βημάτων για την έκδοση άδειας [άδεια]συγκατάθεση [συγκατάθεση]) καλούν συχνά εξουσιοδότηση [εξουσιοδότηση] ή εξουσιοδότηση [εξουσιοδότηση εξουσιοδότησης]. Με αυτό το πρότυπο, επιτρέπετε σε μια εφαρμογή να διαβάζει δεδομένα ή να χρησιμοποιεί τις λειτουργίες μιας άλλης εφαρμογής για λογαριασμό σας χωρίς να της δίνετε τον κωδικό πρόσβασής σας. Τάξη!

Για παράδειγμα, ας υποθέσουμε ότι ανακαλύψατε έναν ιστότοπο που ονομάζεται "Unlucky Pun of the Day" [Τρομερό λογοπαίγνιο της ημέρας] και αποφάσισε να εγγραφεί σε αυτό για να λαμβάνει καθημερινά λογοπαίγνια με τη μορφή γραπτών μηνυμάτων στο τηλέφωνο. Σας άρεσε πολύ ο ιστότοπος και αποφασίσατε να τον μοιραστείτε με όλους τους φίλους σας. Τελικά, σε όλους αρέσουν τα ανατριχιαστικά λογοπαίγνια, σωστά;

Ένας εικονογραφημένος οδηγός για το OAuth και το OpenID Connect
«Το ατυχές λογοπαίγνιο της ημέρας: Ακούσατε για τον τύπο που έχασε το αριστερό μισό του σώματός του; Τώρα έχει πάντα δίκιο!». (μετάφραση κατά προσέγγιση, γιατί το πρωτότυπο έχει το δικό του λογοπαίγνιο - περίπου μετάφρ.)

Είναι σαφές ότι η εγγραφή σε κάθε άτομο από τη λίστα επαφών δεν αποτελεί επιλογή. Και, αν είστε έστω και λίγο σαν εμένα, τότε θα καταβάλετε κάθε προσπάθεια για να αποφύγετε την περιττή δουλειά. Ευτυχώς, το Terrible Pun of the Day μπορεί να προσκαλέσει μόνο του όλους τους φίλους σας! Για να το κάνετε αυτό, απλά πρέπει να ανοίξετε την πρόσβαση στο email των επαφών σας - ο ίδιος ο ιστότοπος θα τους στέλνει προσκλήσεις (κανόνες OAuth)!

Ένας εικονογραφημένος οδηγός για το OAuth και το OpenID Connect
«Σε όλους αρέσουν τα λογοπαίγνια! - Ήδη συνδεδεμένος? «Θα θέλατε να επιτρέψετε στον ιστότοπο Terrible Pun of the Day να έχει πρόσβαση στη λίστα επαφών σας; - Ευχαριστώ! Από εδώ και στο εξής, θα στέλνουμε υπενθυμίσεις κάθε μέρα σε όλους όσους γνωρίζετε, μέχρι το τέλος του χρόνου! Είσαι ο καλύτερος φίλος!"

  1. Επιλέξτε την υπηρεσία email σας.
  2. Εάν είναι απαραίτητο, μεταβείτε στον ιστότοπο αλληλογραφίας και συνδεθείτε στον λογαριασμό σας.
  3. Δώστε στο Terrible Pun of the Day άδεια πρόσβασης στις επαφές σας.
  4. Επιστρέψτε στο Terrible Pun of the Day.

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

Ροή OAuth

Μόλις περάσαμε από αυτό που συνήθως λέγεται ροή [ροή] OAuth. Στο παράδειγμά μας, αυτή η ροή αποτελείται από ορατά βήματα, καθώς και από πολλά αόρατα βήματα, στα οποία δύο υπηρεσίες συμφωνούν για μια ασφαλή ανταλλαγή πληροφοριών. Το προηγούμενο παράδειγμα Τρομερό Pun of the Day χρησιμοποιεί την πιο κοινή ροή OAuth 2.0, γνωστή ως ροή "κωδικός εξουσιοδότησης". [ροή "κωδικός εξουσιοδότησης"].

Πριν βουτήξουμε στις λεπτομέρειες του τρόπου λειτουργίας του OAuth, ας μιλήσουμε για την έννοια ορισμένων όρων:

  • Ιδιοκτήτης πόρων:

    Ένας εικονογραφημένος οδηγός για το OAuth και το OpenID Connect

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

  • Πελάτης:

    Ένας εικονογραφημένος οδηγός για το OAuth και το OpenID Connect

    Μια εφαρμογή (για παράδειγμα, η υπηρεσία Τρομερό λογοπαίγνιο της ημέρας) που θέλει να αποκτήσει πρόσβαση ή να εκτελέσει ορισμένες ενέργειες για λογαριασμό του Ιδιοκτήτης πόρων'ένα.

  • Διακομιστής εξουσιοδότησης:

    Ένας εικονογραφημένος οδηγός για το OAuth και το OpenID Connect

    Η εφαρμογή που ξέρει Ιδιοκτήτης πόρων«α και στο οποίο u Ιδιοκτήτης πόρων'Έχω ήδη λογαριασμό.

  • διακομιστής πόρων:

    Ένας εικονογραφημένος οδηγός για το OAuth και το OpenID Connect

    Διεπαφή προγραμματισμού εφαρμογών (API) ή υπηρεσία που Πελάτης θέλει να χρησιμοποιήσει για λογαριασμό Ιδιοκτήτης πόρων'ένα.

  • Ανακατεύθυνση URI:

    Ένας εικονογραφημένος οδηγός για το OAuth και το OpenID Connect

    Ο σύνδεσμος που Διακομιστής εξουσιοδότησης θα ανακατευθύνει Ιδιοκτήτης πόρων«και μετά τη χορήγηση άδειας Πελάτης'στο. Μερικές φορές αναφέρεται ως "URL επιστροφής κλήσης".

  • Τύπος απόκρισης:

    Ένας εικονογραφημένος οδηγός για το OAuth και το OpenID Connect

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

  • Έκταση:

    Ένας εικονογραφημένος οδηγός για το OAuth και το OpenID Connect

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

  • Συγκατάθεση:

    Ένας εικονογραφημένος οδηγός για το OAuth και το OpenID Connect

    Διακομιστής εξουσιοδότησης παίρνει Πεδίαζητείται Πελάτηςκαι ρωτάει Ιδιοκτήτης πόρων«α, είναι έτοιμος να προσφέρει Πελάτης«Έχετε τα κατάλληλα δικαιώματα.

  • Αναγνωριστικό πελάτη:

    Ένας εικονογραφημένος οδηγός για το OAuth και το OpenID Connect

    Αυτό το αναγνωριστικό χρησιμοποιείται για την αναγνώριση Πελάτης'α επάνω Διακομιστής εξουσιοδότησης'μι.

  • Μυστικό πελάτη:

    Ένας εικονογραφημένος οδηγός για το OAuth και το OpenID Connect

    Αυτός είναι ο κωδικός που είναι γνωστός μόνο Πελάτης'ου και Διακομιστής εξουσιοδότησης'στο. Τους επιτρέπει να μοιράζονται πληροφορίες ιδιωτικά.

  • Κωδικός Εξουσιοδότησης:

    Ένας εικονογραφημένος οδηγός για το OAuth και το OpenID Connect

    Προσωρινός κωδικός με σύντομο χρονικό διάστημα ισχύος, ο οποίος Πελάτης παρέχει Διακομιστής εξουσιοδότησης'y σε αντάλλαγμα για Πρόσβαση στο Token.

  • Πρόσβαση στο Token:

    Ένας εικονογραφημένος οδηγός για το OAuth και το OpenID Connect

    Το κλειδί που θα χρησιμοποιήσει ο πελάτης για να επικοινωνήσει διακομιστής πόρωνΩμ. Ένα είδος σήματος ή κάρτας κλειδιού που παρέχει Πελάτης«Έχετε άδεια να ζητήσετε δεδομένα ή να εκτελέσετε ενέργειες διακομιστής πόρωνγια λογαριασμό σου.

Σημείωση: Μερικές φορές ο διακομιστής εξουσιοδότησης και ο διακομιστής πόρων είναι ο ίδιος διακομιστής. Ωστόσο, σε ορισμένες περιπτώσεις, αυτοί μπορεί να είναι διαφορετικοί διακομιστές, ακόμα κι αν δεν ανήκουν στον ίδιο οργανισμό. Για παράδειγμα, ο διακομιστής εξουσιοδότησης μπορεί να είναι μια υπηρεσία τρίτου μέρους που εμπιστεύεται ο διακομιστής πόρων.

Τώρα που καλύψαμε τις βασικές έννοιες του OAuth 2.0, ας επιστρέψουμε στο παράδειγμά μας και ας ρίξουμε μια πιο προσεκτική ματιά στο τι συμβαίνει στη ροή OAuth.

Ένας εικονογραφημένος οδηγός για το OAuth και το OpenID Connect

  1. Εσείς, Ιδιοκτήτης πόρων, θέλετε να παρέχετε την υπηρεσία Τρομερό λογοπαίγνιο της ημέρας (Πελάτηςy) πρόσβαση στις επαφές σας, ώστε να μπορούν να στέλνουν προσκλήσεις σε όλους τους φίλους σας.
  2. Πελάτης ανακατευθύνει το πρόγραμμα περιήγησης στη σελίδα Διακομιστής εξουσιοδότησης'α και συμπεριλάβετε στο ερώτημα Αναγνωριστικό πελάτη, Ανακατεύθυνση URI, Τύπος απόκρισης και ένα ή περισσότερα Πεδία (άδειες) χρειάζεται.
  3. Διακομιστής εξουσιοδότησης σας επαληθεύει, ζητώντας όνομα χρήστη και κωδικό πρόσβασης εάν χρειάζεται.
  4. Διακομιστής εξουσιοδότησης εμφανίζει μια φόρμα Συγκατάθεση (επιβεβαιώσεις) με λίστα όλων Πεδίαζητείται ΠελάτηςΩμ. Συμφωνείτε ή αρνείστε.
  5. Διακομιστής εξουσιοδότησης σας ανακατευθύνει στον ιστότοπο Πελάτης«α, χρησιμοποιώντας Ανακατεύθυνση URI με Κωδικός Εξουσιοδότησης (Κωδικός Εξουσιοδότησης).
  6. Πελάτης επικοινωνεί απευθείας με Διακομιστής εξουσιοδότησης'ohm (παρακάμπτοντας το πρόγραμμα περιήγησης Ιδιοκτήτης πόρων«α) και στέλνει με ασφάλεια Αναγνωριστικό πελάτη, Μυστικό πελάτη и Κωδικός Εξουσιοδότησης.
  7. Διακομιστής εξουσιοδότησης ελέγχει τα δεδομένα και απαντά με Πρόσβαση στο Token'om (κουπόνι πρόσβασης).
  8. τώρα Πελάτης μπορεί να χρησιμοποιηθεί Πρόσβαση στο Token για να στείλετε ένα αίτημα στο διακομιστής πόρων για να λάβετε μια λίστα επαφών.

Αναγνωριστικό πελάτη και μυστικό

Πολύ πριν επιτρέψετε στο Terrible Pun of the Day να έχει πρόσβαση στις επαφές σας, ο πελάτης και ο διακομιστής εξουσιοδότησης είχαν δημιουργήσει μια σχέση εργασίας. Ο διακομιστής εξουσιοδότησης δημιούργησε το αναγνωριστικό πελάτη και το μυστικό πελάτη (μερικές φορές καλούνται App ID и Μυστικό εφαρμογής) και τα έστειλε στον Πελάτη για περαιτέρω αλληλεπίδραση εντός του OAuth.

Ένας εικονογραφημένος οδηγός για το OAuth και το OpenID Connect
"- Γειά σου! Θα ήθελα να συνεργαστώ μαζί σας! - Βεβαίως, δεν υπάρχει πρόβλημα! Εδώ είναι το αναγνωριστικό πελάτη και το μυστικό σας!»

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

Αλλά δεν είναι μόνο αυτό... Καλωσορίσατε το OpenID Connect!

Το OAuth 2.0 έχει σχεδιαστεί μόνο για εξουσιοδότηση - να παρέχει πρόσβαση σε δεδομένα και λειτουργίες από τη μια εφαρμογή στην άλλη. OpenID Connect (OIDC) είναι ένα λεπτό στρώμα πάνω από το OAuth 2.0 που προσθέτει τα στοιχεία σύνδεσης και προφίλ του χρήστη που είναι συνδεδεμένος στο λογαριασμό. Η οργάνωση μιας συνεδρίας σύνδεσης αναφέρεται συχνά ως αυθεντικοποίηση [αυθεντικοποίηση], και πληροφορίες σχετικά με τον χρήστη που είναι συνδεδεμένος στο σύστημα (δηλ Ιδιοκτήτης πόρωνε), — προσωπικά δεδομένα [Ταυτότητα]. Εάν ο διακομιστής εξουσιοδότησης υποστηρίζει OIDC, μερικές φορές αναφέρεται ως παρόχου προσωπικών δεδομένων [παροχέας ταυτότητας]γιατί παρέχει Πελάτης'έχω πληροφορίες για Ιδιοκτήτης πόρων'μι.

Το OpenID Connect σάς επιτρέπει να εφαρμόζετε σενάρια όπου μπορεί να χρησιμοποιηθεί μία μόνο σύνδεση σε πολλές εφαρμογές - αυτή η προσέγγιση είναι επίσης γνωστή ως μεμονωμένη είσοδος (SSO). Για παράδειγμα, μια εφαρμογή μπορεί να υποστηρίζει την ενοποίηση SSO με κοινωνικά δίκτυα όπως το Facebook ή το Twitter, επιτρέποντας στους χρήστες να χρησιμοποιούν έναν λογαριασμό που έχουν ήδη και προτιμούν να χρησιμοποιούν.

Ένας εικονογραφημένος οδηγός για το OAuth και το OpenID Connect

Η ροή (ροή) OpenID Connect φαίνεται ίδια όπως στην περίπτωση του OAuth. Η μόνη διαφορά είναι ότι στο πρωτεύον αίτημα, το συγκεκριμένο εύρος που χρησιμοποιείται είναι openid, - ΕΝΑ Πελάτης τελικά γίνεται σαν Πρόσβαση στο TokenΚαι Token ID.

Ένας εικονογραφημένος οδηγός για το OAuth και το OpenID Connect

Ακριβώς όπως στη ροή OAuth, Πρόσβαση στο Token στο OpenID Connect, αυτή είναι κάποια τιμή που δεν είναι ξεκάθαρη Πελάτης'στο. Από άποψη ΠελάτηςΠρόσβαση στο Token αντιπροσωπεύει μια συμβολοσειρά χαρακτήρων που μεταβιβάζεται μαζί με κάθε αίτημα προς διακομιστής πόρων'y, που καθορίζει εάν το διακριτικό είναι έγκυρο. Token ID αντιπροσωπεύει ένα εντελώς διαφορετικό πράγμα.

Το ID Token είναι JWT

Token ID είναι μια ειδικά διαμορφωμένη συμβολοσειρά χαρακτήρων που είναι γνωστή ως JSON Web Token ή JWT (μερικές φορές τα διακριτικά JWT προφέρονται σαν "jots"). Σε εξωτερικούς παρατηρητές, το JWT μπορεί να φαίνεται ακατανόητο ασυναρτησία, αλλά Πελάτης μπορεί να εξαγάγει διάφορες πληροφορίες από το JWT, όπως ID, όνομα χρήστη, χρόνο σύνδεσης, ημερομηνία λήξης Token ID«α, η παρουσία προσπαθειών παρέμβασης στο JWT. Δεδομένα μέσα Token ID«α λέγονται εφαρμογές [αξιώσεις].

Ένας εικονογραφημένος οδηγός για το OAuth και το OpenID Connect

Στην περίπτωση του OIDC, υπάρχει επίσης ένας τυπικός τρόπος με τον οποίο Πελάτης μπορεί να ζητήσει πρόσθετες πληροφορίες για το άτομο [Ταυτότητα] από Διακομιστής εξουσιοδότησης«μια, για παράδειγμα, μια διεύθυνση email που χρησιμοποιεί Πρόσβαση στο Token.

Μάθετε περισσότερα για το OAuth και το OIDC

Έτσι, εξετάσαμε εν συντομία πώς λειτουργούν το OAuth και το OIDC. Είστε έτοιμοι να σκάψετε βαθύτερα; Ακολουθούν πρόσθετοι πόροι που θα σας βοηθήσουν να μάθετε περισσότερα σχετικά με το OAuth 2.0 και το OpenID Connect:

Όπως πάντα, μη διστάσετε να σχολιάσετε. Για να ενημερώνεστε για τα τελευταία μας νέα, εγγραφείτε στο Twitter и YouTube Okta για προγραμματιστές!

ΥΓ από τον μεταφραστή

Διαβάστε επίσης στο blog μας:

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο