Οδηγοί

Τι είναι η αυθεντικοποίηση; Συνδέσεις, συνεδρίες και OAuth εξηγημένα

Η αυθεντικοποίηση είναι ο τρόπος με τον οποίο μια εφαρμογή επιβεβαιώνει ποιος είναι ένας χρήστης — συνήθως ελέγχοντας κάτι που ξέρει (έναν κωδικό), κάτι που έχει (έναν κωδικό που στέλνεται στο τηλέφωνο ή στο email του) ή μια ταυτότητα από άλλη αξιόπιστη υπηρεσία (όπως το «Σύνδεση με Google»). Μόλις ο χρήστης αυθεντικοποιηθεί, η εφαρμογή τον θυμάται με μια συνεδρία ή ένα token, ώστε να μην χρειάζεται να συνδέεται σε κάθε σελίδα. Η απόφαση για το τι επιτρέπεται να κάνει ο γνωστός πια χρήστης είναι ξεχωριστό βήμα που ονομάζεται εξουσιοδότηση.

Γιατί έχει σημασία όταν φτιάχνετε με AI

Η προσθήκη σύνδεσης είναι από τα πιο συνηθισμένα αιτήματα προς ένα εργαλείο δημιουργίας με AI, και από τα πιο εύκολα να γίνει λανθασμένα με λεπτό τρόπο. Μια σελίδα σύνδεσης είναι εύκολο να δημιουργηθεί. Το δύσκολο είναι όλα όσα τη συνοδεύουν:

  • Αποθηκεύονται οι κωδικοί με ασφάλεια;
  • Κάθε ιδιωτική σελίδα και κάθε endpoint API ελέγχει πράγματι ποιος ζητά την πρόσβαση;
  • Μπορεί ένας συνδεδεμένος πελάτης να δει τα δεδομένα άλλου πελάτη αλλάζοντας έναν αριθμό στη διεύθυνση;
  • Τι συμβαίνει όταν κάποιος ξεχάσει τον κωδικό του;

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

Μια καθημερινή αναλογία

σκεφτείτε το check-in σε ξενοδοχείο.

Στη ρεσεψιόν δείχνετε ταυτότητα. Αυτό είναι η αυθεντικοποίηση: αποδεικνύετε ποιος είστε. Ο υπάλληλος σας δίνει μια κάρτα-κλειδί. Αυτή η κάρτα είναι η συνεδρία σας: για όλη τη διαμονή δεν δείχνετε ξανά ταυτότητα· πατάτε την κάρτα.

Η κάρτα ανοίγει το δωμάτιό σας, το γυμναστήριο και το ασανσέρ στον όροφό σας — όχι τα δωμάτια των άλλων επισκεπτών ή το γραφείο του προσωπικού. Αυτό είναι η εξουσιοδότηση: τι επιτρέπεται να προσπελάσει η ταυτότητά σας. Αν χάσετε την κάρτα, το ξενοδοχείο μπορεί να την απενεργοποιήσει στη ρεσεψιόν (ανάκληση συνεδρίας). Όταν φύγετε, παύει να λειτουργεί (αποσύνδεση ή λήξη).

Η «Σύνδεση με Google» είναι σαν ένα ξενοδοχείο που δέχεται ένα γράμμα από έναν αξιόπιστο συνεργάτη που λέει «αυτός είναι ο χρήστης», αντί να ελέγξει μόνο του την ταυτότητά σας.

Οι κύριες μέθοδοι σύνδεσης

ΜέθοδοςΠώς λειτουργείΠλεονεκτήματαΜειονεκτήματα
Email + κωδικόςΟ χρήστης επιλέγει κωδικό· η εφαρμογή αποθηκεύει το hash τουΟικείο, χωρίς εξωτερική εξάρτησηΠρέπει να αποθηκεύετε τα hashes με ασφάλεια και να χειρίζεστε επαναφορές
Μαγικός σύνδεσμος / κωδικός μίας χρήσηςΗ εφαρμογή στέλνει σύνδεσμο ή κωδικό στο email που συνδέει τον χρήστηΧωρίς κωδικούς να διαρρεύσουν ή να ξεχαστούνΕξαρτάται από την παράδοση email· πιο αργή σύνδεση
Σύνδεση μέσω κοινωνικού λογαριασμού (OAuth / OpenID Connect)Ο χρήστης συνδέεται με Google, Apple, GitHub κ.ά.Γρήγορο για τον χρήστη· δεν αποθηκεύετε κωδικόΡύθμιση με κάθε πάροχο· χρήστες χωρίς αυτούς τους λογαριασμούς
Φιλοξενούμενος πάροχος αυθεντικοποίησηςΥπηρεσία όπως η Clerk, η Auth0 ή το Supabase Auth χειρίζεται εγγραφή, σύνδεση και επαναφορέςΛιγότερη δουλειά ασφάλειας για εσάςΜηνιαίο κόστος σε μεγάλη κλίμακα· άλλη εξάρτηση
Πολυπαραγοντική (MFA / 2FA)Ένας δεύτερος έλεγχος μετά τον πρώτο, όπως κωδικός από εφαρμογή ταυτοποίησηςΠολύ δυσκολότερο να παραβιαστείΛίγο περισσότερη τριβή

Πώς πρέπει να αποθηκεύονται οι κωδικοί

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

Δύο λεπτομέρειες το κάνουν ασφαλές:

  • Ένα salt — μια τυχαία τιμή που προστίθεται σε κάθε κωδικό πριν από το hash, ώστε δύο άνθρωποι με τον ίδιο κωδικό να έχουν διαφορετικά hashes, και οι προϋπολογισμένοι πίνακες αναζήτησης να είναι άχρηστοι.
  • Ένας αργός αλγόριθμος φτιαγμένος για κωδικούς — όπως το Argon2, το bcrypt ή το scrypt. Τα γενικής χρήσης hashes όπως το MD5 ή το SHA-256 είναι πολύ γρήγορα από μόνα τους· οι επιτιθέμενοι μπορούν να δοκιμάσουν δισεκατομμύρια εικασίες.

Το hashing δεν είναι το ίδιο με την κρυπτογράφηση. Τα κρυπτογραφημένα δεδομένα αποκρυπτογραφούνται με κλειδί· ένα hash κωδικού είναι σχεδιασμένο να μην αναστρέφεται καθόλου.

Συνεδρίες έναντι tokens

Μετά τη σύνδεση, η εφαρμογή χρειάζεται να σας αναγνωρίζει σε κάθε αίτημα. Υπάρχουν δύο συνηθισμένες προσεγγίσεις.

Συνεδρία (cookie)Token (π.χ. JWT)
Τι κρατά ο περιηγητήςΈνα τυχαίο ID συνεδρίας σε cookieΈνα υπογεγραμμένο token με πληροφορίες χρήστη και ημερομηνία λήξης
Πού ζει η κατάσταση σύνδεσηςΣτον διακομιστή, σε βάση ή αποθήκηΜέσα στο ίδιο το token
Αποσύνδεση από παντούΕύκολο: διαγράφετε τη συνεδρία στον διακομιστήΔυσκολότερο: το token παραμένει έγκυρο μέχρι να λήξει, εκτός αν κρατάτε λίστα αποκλεισμού
Τυπική χρήσηΠαραδοσιακές web εφαρμογέςAPIs, εφαρμογές κινητών, υπηρεσίες που επικοινωνούν μεταξύ τους

Για τα cookies, τρεις ρυθμίσεις έχουν σημασία: HttpOnly (η JavaScript της σελίδας δεν μπορεί να διαβάσει το cookie), Secure (στέλνεται μόνο μέσω HTTPS) και SameSite (περιορίζει την αποστολή του σε αιτήματα από άλλους ιστότοπους). Η αποθήκευση tokens στο localStorage του περιηγητή είναι συνηθισμένη, αλλά τα εκθέτει σε κάθε script που τρέχει στη σελίδα.

OAuth και «Σύνδεση με Google»

Το OAuth 2.0 είναι πρότυπο για εξουσιοδότηση με αντιπροσώπευση: επιτρέπει σε μια εφαρμογή να αποκτήσει περιορισμένη πρόσβαση στον λογαριασμό σας σε άλλη υπηρεσία — για παράδειγμα, να διαβάσει το Google Calendar σας — χωρίς ποτέ να δει τον κωδικό σας στη Google. Σας στέλνουν στη Google, εγκρίνετε συγκεκριμένα δικαιώματα (που λέγονται scopes), και η Google δίνει στην εφαρμογή ένα token μόνο για αυτά τα δικαιώματα.

Το OAuth από μόνο του σχεδιάστηκε για να δίνει πρόσβαση, όχι για να λέει ποιος είστε. Το OpenID Connect (OIDC) είναι ένα στρώμα πάνω από το OAuth 2.0 που προσθέτει ταυτότητα, και αυτό χρησιμοποιεί το «Σύνδεση με Google» ή το «Σύνδεση με Apple». Για να το ρυθμίσετε, καταχωρίζετε την εφαρμογή σας στον πάροχο και παίρνετε ένα client ID και ένα client secret· το secret μένει στον διακομιστή σας.

Ένα παράδειγμα βήμα βήμα: σύνδεση για πύλη πελατών

Υποθέστε ότι φτιάχνετε μια πύλη όπου πελάτες ενός γραφείου σχεδιασμού βλέπουν τα έργα και τα τιμολόγιά τους.

  • Αυθεντικοποίηση: οι πελάτες συνδέονται με email και σύνδεσμο μαγικού email, οπότε δεν υπάρχουν κωδικοί να διαχειριστείτε. Το προσωπικό του γραφείου συνδέεται με λογαριασμούς Google Workspace.
  • Ρόλοι: κάθε χρήστης έχει ρόλο — client ή staff.
  • Κανόνες εξουσιοδότησης:
ΕνέργειαΠελάτηςΠροσωπικό
Να βλέπει τα έργα της δικής του εταιρείαςΝαιΝαι
Να βλέπει έργα άλλων εταιρειώνΌχιΝαι
Να ανεβάζει αρχείο σε έργοΜόνο στα δικά του έργαΝαι
Να σημειώνει ένα τιμολόγιο ως πληρωμένοΌχιΝαι
  • Πού επιβάλλεται: στον διακομιστή, σε κάθε αίτημα. Ο διακομιστής βρίσκει τον συνδεδεμένο χρήστη και επιστρέφει μόνο έργα όπου το project.company_id ταιριάζει με την εταιρεία του χρήστη. Το να κρύψετε το κουμπί «Σημείωση ως πληρωμένο» δεν αρκεί — το ίδιο το endpoint πρέπει να το απορρίπτει.

Συνηθισμένοι όροι εξηγημένοι

ΌροςΣημασία
Αυθεντικοποίηση (AuthN)Η επιβεβαίωση του ποιος είναι κάποιος.
Εξουσιοδότηση (AuthZ)Η απόφαση για το τι επιτρέπεται να κάνει.
Συνεδρία (Session)Η εφαρμογή θυμάται ότι είστε συνδεδεμένοι ανάμεσα στα αιτήματα.
CookieΈνα μικρό κομμάτι δεδομένων που ο περιηγητής στέλνει πίσω στον ιστότοπο με κάθε αίτημα.
JWTJSON Web Token: ένα υπογεγραμμένο, συμπαγές token που μεταφέρει στοιχεία όπως ID χρήστη και λήξη.
Ρόλος / δικαίωμα (Role / permission)Ετικέτες όπως admin ή member που καθορίζουν την πρόσβαση.
MFA / 2FAΗ απαίτηση δεύτερης απόδειξης, όπως κωδικός από εφαρμογή ταυτοποίησης.
SSOΜοναδική είσοδος (single sign-on): μία σύνδεση, συχνά με εταιρικό λογαριασμό, για πολλές εφαρμογές.
401 vs 403«Ποιος είσαι;» (δεν έχεις αυθεντικοποιηθεί) έναντι «Δεν μπορείς να το κάνεις αυτό» (δεν έχεις εξουσιοδότηση).

Συνηθισμένα λάθη και παρανοήσεις

  • Έλεγχος δικαιωμάτων μόνο στη σελίδα. Αν ο περιηγητής κρύβει ένα κουμπί αλλά το API δεν ελέγχει, οποιοσδήποτε μπορεί να καλέσει το API απευθείας.
  • Εμπιστοσύνη σε ID από τη διεύθυνση. Το /invoices/1042 πρέπει να ελέγχει ότι το τιμολόγιο 1042 ανήκει στον συνδεδεμένο χρήστη.
  • Δική σας κρυπτογραφία. Χρησιμοποιήστε γνωστές βιβλιοθήκες ή παρόχους· μην αφήνετε την AI να εφεύρει σχήμα hashing.
  • Αδύναμη επαναφορά κωδικού. Οι σύνδεσμοι επαναφοράς πρέπει να είναι μίας χρήσης, να λήγουν γρήγορα και να μην αποκαλύπτουν αν ένα email έχει λογαριασμό.
  • Σύγχυση της σύνδεσής σας με αυτή του εργαλείου σας. Οι χρήστες της εφαρμογής σας είναι διαφορετικοί από τον λογαριασμό σας στο εργαλείο με το οποίο τη φτιάχνετε.
  • Χωρίς περιορισμό ρυθμού στη σύνδεση. Χωρίς αυτόν, οι επιτιθέμενοι μπορούν να δοκιμάζουν κωδικούς ατελείωτα.

Τι να ζητήσετε από το εργαλείο AI

  • «Πρόσθεσε εγγραφή και σύνδεση με [μια γνωστή βιβλιοθήκη ή πάροχο]. Μην γράψεις δική σου επεξεργασία κωδικών.»
  • «Αποθήκευε τους κωδικούς με hash μέσω bcrypt ή Argon2.»
  • «Χρησιμοποίησε cookies HttpOnly και Secure για τη συνεδρία.»
  • «Πρόσθεσε ρόλους: admin και member. Κάνε λίστα κάθε endpoint και ποιοι ρόλοι μπορούν να το καλέσουν.»
  • «Επέβαλε στον διακομιστή ότι οι χρήστες μπορούν να διαβάζουν και να επεξεργάζονται μόνο τις δικές τους εγγραφές. Μετά δείξε μου πώς το έλεγξες.»
  • «Πρόσθεσε επαναφορά κωδικού με συνδέσμους μίας χρήσης που λήγουν σε μία ώρα.»
  • «Περιόρισε τον ρυθμό των προσπαθειών σύνδεσης.»

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

Αυθεντικοποίηση στο Mythex

Το Mythex δεν παρέχει ενσωματωμένο προϊόν αυθεντικοποίησης για τους χρήστες της εφαρμογής σας· επιλέγετε εσείς μια προσέγγιση — email και κωδικό αποθηκευμένα στη βάση δεδομένων του έργου σας, ή το SDK ενός φιλοξενούμενου παρόχου — και ζητάτε από τον πράκτορα να τη προσθέσει. Τα κλειδιά του παρόχου μπαίνουν στα μυστικά του έργου, όχι στη συνομιλία. Αυτό είναι ξεχωριστό από το πώς συνδέεστε στο ίδιο το Mythex. Η συνταγή της τεκμηρίωσης για την προσθήκη σύνδεσης στην εφαρμογή σας έχει ένα αρχικό prompt που μπορείτε να προσαρμόσετε, και το τι είναι ένα API εξηγεί πού ζουν αυτοί οι έλεγχοι στον διακομιστή.

Ερωτήσεις

Ποια είναι η διαφορά ανάμεσα στην αυθεντικοποίηση και στην εξουσιοδότηση;

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

Τι είναι το OAuth;

Το OAuth 2.0 είναι ένα πρότυπο που επιτρέπει σε μια εφαρμογή να αποκτήσει περιορισμένη πρόσβαση στον λογαριασμό σας σε άλλη υπηρεσία χωρίς να βλέπει τον κωδικό σας. Το «Σύνδεση με Google» χρησιμοποιεί το OpenID Connect, ένα στρώμα ταυτότητας πάνω από το OAuth 2.0, ώστε η εφαρμογή να μαθαίνει ποιος είστε από τη Google.

Πρέπει η εφαρμογή μου να αποθηκεύει κωδικούς;

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

Συνεδρίες ή tokens — ποια πρέπει να χρησιμοποιήσει η εφαρμογή μου;

Και τα δύο λειτουργούν. Μια συνεδρία κρατά την κατάσταση σύνδεσης στον διακομιστή και δίνει στον περιηγητή ένα τυχαίο ID σε cookie, που είναι εύκολο να ανακληθεί. Ένα token, όπως ένα JWT, μεταφέρει από μόνο του υπογεγραμμένες πληροφορίες και ταιριάζει σε APIs και εφαρμογές κινητών, αλλά είναι δυσκολότερο να ακυρωθεί πριν λήξει. Για μια τυπική web εφαρμογή, οι συνεδρίες με cookies είναι εύλογη προεπιλογή.

Mythex · Pricing · Χτίστε οτιδήποτε με AI · Πρότυπα ιστοσελίδων και εφαρμογών · Το Mythex σε σύγκριση · Γλωσσάρι δημιουργίας εφαρμογών με AI · Δωρεάν εργαλεία δημιουργίας εφαρμογών με AI · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)