Mon Apr 13 2020
...
Ρύθμιση SSO με FastComments
Επισκόπηση
Τι είναι το SSO;
Το SSO, ή single-sign-on, είναι μια σειρά από συμβάσεις που επιτρέπουν σε εσάς ή τους χρήστες σας να χρησιμοποιούν το FastComments χωρίς να χρειάζεται να δημιουργήσουν άλλο λογαριασμό.
Υποθέτοντας ότι δεν επιτρέπετε ανώνυμες σχόλια, απαιτείται ένας λογαριασμός για να σχολιάσετε με το FastComments. Κάνουμε αυτή τη διαδικασία εγγραφής πολύ εύκολη - ο χρήστης απλά αφήνει το email του όταν σχολιάζει. Ωστόσο, κατανοούμε ότι ακόμη και αυτό είναι μια επιπλέον τριβή που κάποιες ιστοσελίδες θέλουν να αποφύγουν.
Πώς να το λάβω;
Όλοι οι τύποι λογαριασμών έχουν αυτή τη στιγμή πρόσβαση στο SSO καθώς και υποστήριξη. Ωστόσο, ο μέγιστος αριθμός χρηστών SSO θα διαφέρει ανάλογα με το πακέτο σας.
Χρήστες WordPress
Αν χρησιμοποιείτε το plugin WordPress, τότε δεν υπάρχει κώδικας να γράψετε! Απλά πηγαίνετε στη σελίδα Διαχείρισης του plugin, κάντε κλικ στις Ρυθμίσεις SSO και μετά Ενεργοποιήστε.
Αυτό θα σας παραπέμψει σε έναν οδηγό με ένα κουμπί που θα δημιουργήσει το API κλειδί σας, θα το στείλει στην εγκατάσταση του WordPress σας και θα ενεργοποιήσει το SSO. Έχουμε συγκεντρώσει αυτή τη διαδικασία σε ένα μόνο κλικ για εσάς.
Σημειώστε ότι αν εγκαθιστάτε το plugin για πρώτη φορά, θα πρέπει να ολοκληρώσετε τη διαδικασία ρύθμισης πριν δείτε τη σελίδα διαχείρισης με το κουμπί Ρυθμίσεων SSO.
Προσαρμοσμένες Ενσωματώσεις
Το FastComments SSO χρησιμοποιεί κρυπτογράφηση HMAC-SHA256 ως μηχανισμό για την υλοποίηση του SSO. Αρχικά θα εξετάσουμε την συνολική αρχιτεκτονική, θα παρέχουμε παραδείγματα και λεπτομερή βήματα. Ωστόσο, στο τέλος αυτού του άρθρου υπάρχουν οδηγίες για μετανάστευση από το Disqus και το Commento.
Η ροή είναι ως εξής:
Δεν χρειάζεται να γράψετε κανένα νέο API endpoint με το FastComments SSO. Απλά κρυπτογραφήστε τις πληροφορίες του χρήστη χρησιμοποιώντας το μυστικό σας κλειδί και περάστε το payload στο widget σχολίων.
Παρέχουμε πλήρως λειτουργικά παραδείγματα κώδικα σε πολλές γλώσσες/πλατφόρμες περιλαμβάνοντας NodeJS, Java/Spring και vanilla PHP. Αν και χρησιμοποιούμε το ExpressJS στο παράδειγμα NodeJS και το Spring στο παράδειγμα Java, δεν απαιτούνται frameworks/libraries σε αυτές τις πλατφόρμες για να υλοποιήσετε το FastComments SSO - τα εγγενή πακέτα κρυπτογράφησης λειτουργούν.
Μπορείτε να βρείτε το αποθετήριο παραδειγμάτων κώδικα εδώ:
FastComments SSO Παραδείγματα Κώδικα
Αποκτήστε το API Μυστικό Κλειδί σας
Το API Μυστικό σας μπορεί να ανακτηθεί από αυτή τη σελίδα. Μπορείτε να βρείτε αυτή τη σελίδα πηγαίνοντας στον Λογαριασμό Μου, κάνοντας κλικ στο tile API/SSO και στη συνέχεια κάνοντας κλικ στο "Λήψη API Μυστικού Κλειδιού".
Παράμετροι Widget Σχολίων
Η τεκμηρίωση API σε υψηλό επίπεδο για το widget σχολίων μπορεί να βρεθεί εδώ κάνοντας κλικ στο "Εμφάνιση Προχωρημένων Επιλογών". Ψάξτε για SSO στη σελίδα.
Ας μπούμε σε περισσότερες λεπτομέρειες σχετικά με το τι σημαίνουν αυτές οι παράμετροι.
Το widget σχολίων δέχεται ένα αντικείμενο ρύθμισης - ήδη το περνάτε αν χρησιμοποιείτε το FastComments για να περάσετε το customer id σας (που ονομάζεται tenantId).
Για να ενεργοποιήσετε το SSO, περάστε ένα νέο αντικείμενο "sso", το οποίο πρέπει να έχει τις εξής παραμέτρους. Οι τιμές θα πρέπει να δημιουργηθούν server side.
- userDataJSONBase64: Τα δεδομένα του χρήστη σε μορφή JSON, τα οποία στη συνέχεια κωδικοποιούνται σε Base64.
- verificationHash: Το hash HMAC-SHA256 που δημιουργείται από UNIX_TIME + userDataJSONBase64.
- timestamp: Ο τρέχων unix χρόνος. Δεν πρέπει να είναι στο μέλλον ή περισσότερο από τρεις ώρες στο παρελθόν.
- loginURL: Μια διεύθυνση URL την οποία το widget σχολίων μπορεί να εμφανίσει για να συνδεθεί ο χρήστης.
- logoutURL: Μια διεύθυνση URL την οποία το widget σχολίων μπορεί να εμφανίσει για να αποσυνδεθεί ο χρήστης.
- loginCallback: Όταν παρέχεται αντί της διεύθυνσης URL σύνδεσης, μια συνάρτηση που θα καλέσει το widget σχολίων όταν κάνετε κλικ στο κουμπί σύνδεσης.
- logoutCallback: Όταν παρέχεται αντί της διεύθυνσης URL αποσύνδεσης, μια συνάρτηση που θα καλέσει το widget σχολίων όταν κάνετε κλικ στο κουμπί αποσύνδεσης.
Το Αντικείμενο Χρήστη
Το Αντικείμενο Χρήστη περιέχει την εξής δομή:
- id (string, απαιτείται) (1k χαρακτήρες μέγιστο)
- email (string, απαιτείται) (1k χαρακτήρες μέγιστο). Σημείωση: Πρέπει να είναι μοναδικό.
- username (string, απαιτείται) (1k χαρακτήρες μέγιστο). Σημείωση: Το όνομα χρήστη δεν μπορεί να είναι email. Δεν χρειάζεται να είναι μοναδικό.
- avatar (string, προαιρετικό) (3k χαρακτήρες μέγιστο)
- optedInNotifications (boolean, προαιρετικό)
- displayLabel (string, προαιρετικό, 100 χαρακτήρες μέγιστο). Αυτή η ετικέτα θα εμφανίζεται δίπλα στο όνομά τους.
- websiteUrl (string, προαιρετικό, 2000 χαρακτήρες μέγιστο). Το όνομα του χρήστη θα συνδέεται με αυτό.
Ειδοποιήσεις
Για να ενεργοποιήσετε ή να απενεργοποιήσετε τις ειδοποιήσεις, ρυθμίστε την τιμή της optedInNotifications σε true ή false αντίστοιχα. Την πρώτη φορά που ο χρήστης φορτώνει τη σελίδα με αυτή την τιμή στο SSO payload, οι ρυθμίσεις ειδοποιήσεών τους θα ενημερωθούν.
Χρήστες VIP & Ειδικές Ετικέτες
Μπορείτε να εμφανίσετε μια ειδική ετικέτα δίπλα στο όνομα του χρήστη χρησιμοποιώντας το προαιρετικό πεδίο "displayLabel".
Ανώνυμοι χρήστες
Για να εκπροσωπήσετε έναν ανώνυμο χρήστη, απλά μην συμπληρώσετε userDataJSONBase64, verificationHash ή timestamp. Παρέχετε μια loginURL.
Άμεσες παραδείγματα για Σειριοποίηση και Χάρισμα Δεδομένων Χρήστη
Περισσότερες λεπτομέρειες ως παραδείγματα εδώ (js), εδώ (java) και εδώ (php).
Μετανάστευση από το Disqus SSO
Οι μεγαλύτερες διαφορές μεταξύ του Disqus και του FastComments SSO είναι ότι το Disqus χρησιμοποιεί SHA1 για την κρυπτογράφηση, ενώ εμείς χρησιμοποιούμε SHA256. Αυτό σημαίνει ότι η μετανάστευση από το Disqus είναι εύκολη - αλλάξτε τον αλγόριθμο χάρισματος από SHA1 σε SHA256 και ενημερώστε τα ονόματα ιδιοτήτων που περνάτε στο UI.
Μετανάστευση από το Commento SSO
Το Commento χρησιμοποιεί μια δραστικά διαφορετική προσέγγιση SSO - απαιτούν να έχετε ένα endpoint το οποίο καλούν για να πιστοποιήσουν τον χρήστη. Το FastComments είναι το αντίθετο - απλά κωδικοποιήστε και χαράξτε τις πληροφορίες του χρήστη χρησιμοποιώντας το μυστικό σας κλειδί και περάστε το.
Κατανοούμε ότι κάθε ενσωμάτωση μπορεί να είναι μια περίπλοκη και επίπονη διαδικασία. Μην διστάσετε να επικοινωνήσετε με τον εκπρόσωπό σας ή χρησιμοποιήστε τη σελίδα υποστήριξης.
