
Γλώσσα 🇬🇷 Ελληνικά
Υπόβαθρο
Υλοποίηση
Έλεγχος Πρόσβασης SSO
Τι είναι ο έλεγχος πρόσβασης; 
Με το FastComments SSO Access Control, που μερικές φορές αναφέρεται ως RBAC, οι χρήστες μπορούν να περιοριστούν ώστε να έχουν πρόσβαση μόνο σε συγκεκριμένες σελίδες ή νήματα σχολίων. Επιπλέον,
οι χρήστες μπορούν να κάνουν @mention ο ένας τον άλλον μόνο μέσα στην ίδια ομάδα.
Αναλυτικά
Μπορούμε να τοποθετήσουμε Users και προαιρετικά Pages σε ομάδες.
Όταν οι Users τοποθετούνται σε ομάδες και η επιλογή Limit Comments by SSO User Groups είναι ενεργοποιημένη στις Ρυθμίσεις Widget, τότε οι χρήστες
θα βλέπουν μόνο σχόλια από χρήστες στις ίδιες ομάδες τους και θα μπορούν να κάνουν @mention μόνο χρήστες στις ίδιες ομάδες.
Επιπλέον, οι Pages μπορούν να τοποθετηθούν σε ομάδες, και τότε οι χρήστες μπορούν να έχουν πρόσβαση μόνο στα σχόλια των σελίδων στις οποίες έχουν πρόσβαση.
Το ονομάζουμε ομάδες "Επιπέδου Χρήστη" (User-Level) σε αντίθεση με ομάδες "Επιπέδου Σελίδας" (Page-Level).
Ποια λοιπόν είναι η κατάλληλη για εσάς;
Χρησιμοποιήστε Ομάδες Επιπέδου Χρήστη αν...
- Θέλετε να χρησιμοποιήσετε την ίδια τιμή
urlId(URL σελίδας ή ID άρθρου), αλλά να περιορίσετε τα σχόλια ανά ομάδα. - Για παράδειγμα, θέλετε να έχετε ομάδες "Νέος Χρήστης" και "Έμπειρος Χρήστης", και να μην βλέπουν ποτέ τα σχόλια του ενός του άλλου στις ίδιες σελίδες.
Χρησιμοποιήστε Ομάδες Επιπέδου Σελίδας αν...
- Οι ομάδες σας έχουν συγκεκριμένες σελίδες.
- Για παράδειγμα, οι χρήστες της ομάδας "Δημόσιες Σελίδες" δεν θα πρέπει ποτέ να βλέπουν άρθρα των "Απόρρητων" άρθρων.
Πώς λειτουργεί 
Το FastComments Access Control λειτουργεί αναθέτοντας τις Pages και Users στις επιθυμητές ομάδες.
Μια ομάδα είναι απλά ένας αναγνωριστής συμβολοσειράς, όπως GREEN ή abc-123.
Users και Pages δεν περιορίζονται μόνο σε μία ομάδα. Περιορίζονται σε 100 και 1000 ομάδες, αντίστοιχα.
Πρόσβαση σε μη εξουσιοδοτημένες σελίδες
Εάν ένας χρήστης προσπαθήσει να αποκτήσει πρόσβαση σε μια σελίδα στην οποία δεν έχει πρόσβαση, θα δει ένα μήνυμα σφάλματος, όπως παρακάτω:
Το κείμενο του μηνύματος μπορεί να προσαρμοστεί.
Η προδιαγραφή 
Ο ορισμός του τρόπου αλληλεπίδρασης πολλαπλών χρηστών, και ο έλεγχός του, είναι πολύπλοκος. Ακολουθεί η προδιαγραφή που ακολουθούμε για τον έλεγχο πρόσβασης, την οποία μπορείτε να χρησιμοποιήσετε για να δοκιμάσετε την υλοποίησή σας:
Σελίδα με null group ids, χρήστης με null group ids - θα πρέπει να έχει πρόσβαση.
Σελίδα με null group ids, χρήστης με group ids - θα πρέπει να έχει πρόσβαση.
Σελίδα με group ids, χρήστης με null group ids - θα πρέπει να έχει πρόσβαση.
Σελίδα με group ids, χρήστης με κενή λίστα - δεν θα πρέπει να έχει πρόσβαση.
Σελίδα με group ids, χρήστης με group ids - υπάρχει τομή - θα πρέπει να έχει πρόσβαση.
Σελίδα με group ids, χρήστης με group ids - δεν υπάρχει τομή - δεν θα πρέπει να έχει πρόσβαση.
Σελίδα με κενή λίστα group ids (κανείς δεν έχει πρόσβαση), χρήστης με null - δεν θα πρέπει να έχει πρόσβαση.
SSO User A = Χωρίς ορισμένα group ids (null = πλήρης πρόσβαση).
SSO User B = Χωρίς ορισμένα group ids (null = πλήρης πρόσβαση).
Ο A μπορεί να κάνει @B.
SSO User A = Χωρίς ορισμένα group ids (null = πλήρης πρόσβαση).
SSO User B = Με ορισμένα group ids.
Ο A μπορεί να κάνει @B.
SSO User A = Με ορισμένα group ids.
SSO User B = Χωρίς ορισμένα group ids (null = πλήρης πρόσβαση).
Ο A μπορεί να κάνει @B.
SSO User A = Group ids = [a].
SSO User B = Group ids = [b].
Ο A δεν μπορεί να κάνει @B.
SSO User A = Group ids = [a].
SSO User B = Group ids = [a, b].
Ο A μπορεί να κάνει @B.
Υλοποίηση 
Αναφορά χρηστών σε άλλες ομάδες
Εάν δύο χρήστες ανήκουν σε δύο διαφορετικά σύνολα ομάδων και δεν υπάρχει επικάλυψη, δεν θα μπορούν να @mention ο ένας τον άλλο.
Εάν ένας χρήστης πληκτρολογήσει χειροκίνητα ένα @mention και υποβάλει το σχόλιό του, αυτό θα παραμείνει ως απλό κείμενο. Ο άλλος χρήστης δεν θα επισημανθεί.
Διαχείριση ομάδων
Groups ορίζονται χρησιμοποιώντας τους πόρους API Pages και SSOUsers, αντίστοιχα.
Το API Pages μπορεί να κληθεί για να ορίσει το σύνολο των ομάδων που επιτρέπεται να έχουν πρόσβαση στη σελίδα. Από προεπιλογή, όλες οι ομάδες, καθώς και οι χρήστες που δεν ανήκουν σε κάποια ομάδα, έχουν
πρόσβαση.
Ομοίως, το API SSOUsers μπορεί να κληθεί για να ορίσει τις ομάδες που σχετίζονται με κάθε χρήστη.
Για και τους δύο πόρους, δεν υπάρχουν περιορισμοί ως προς το πότε οι ομάδες μπορούν να οριστούν ή να ενημερωθούν.
Αν επιθυμείται μόνο να περιοριστεί η δυνατότητα των χρηστών να @mention'ουν ο ένας τον άλλο, τότε οι Pages δεν χρειάζεται να ληφθούν υπόψη.
Σημείωση!
Ο ορισμός και η ενημέρωση των ομάδων χρηστών SSO δεν απαιτεί τη χρήση του API, και αντίθετα μπορεί να ενημερωθεί αυτόματα ορίζοντας τα ids των ομάδων στο payload του SSO που περνάει στο widget σχολίων. Ωστόσο, για μεγάλες λίστες ομάδων, αυτό δεν συνιστάται καθώς ο χρήστης θα πρέπει να υποβάλει αυτό το payload σε κάθε φόρτωση σελίδας.
Παραδείγματα κλήσεων API 
Σε αυτό το κείμενο θα δούμε βήμα προς βήμα την κλήση του FastComments API για τη ρύθμιση του ελέγχου πρόσβασης.
Πριν ξεκινήσουμε, σημειώστε ότι δεν χρειάζεται να δημιουργήσουμε ρητά μια δομή Group. Οι ομάδες είναι απλώς αναγνωριστικά που προστίθενται σε Users και Pages. Η προσθήκη μιας ομάδας σε χρήστη ή σελίδα "δημιουργεί" αυτόματα την ομάδα.
Πρώτα, ας δημιουργήσουμε δύο χρήστες, User A και User B, οι οποίοι θα ξεκινήσουν στην Group X:


Τώρα ας δημιουργήσουμε μια Page. Θα την ονομάσουμε Confidential Page, και προς το παρόν κανένας από αυτούς τους χρήστες δεν θα έχει πρόσβαση σε αυτήν, καθώς θα βρίσκεται στην ομάδα CONFIDENTIAL:

Οι χρήστες A και B προς το παρόν ΔΕΝ έχουν πρόσβαση στη νέα σελίδα. Ωστόσο, καθώς βρίσκονται στην ίδια ομάδα, GROUP-X, μπορούν να κάνουν @mention ο ένας στον άλλον.
Ας ενημερώσουμε τον User B ώστε να έχει πλέον πρόσβαση στη σελίδα:

Ο User B ανήκει πλέον και στις δύο ομάδες. Οι χρήστες μας μπορούν ακόμα να κάνουν @mention ο ένας στον άλλον, αλλά μόνο ο User B μπορεί να δει τη εμπιστευτική σελίδα.
Ας κάνουμε τον User B να μπορεί να βλέπει μόνο την εμπιστευτική σελίδα:

Τώρα μπορεί να δει την εμπιστευτική σελίδα, αλλά κανείς από τους δύο χρήστες δεν μπορεί να κάνει @mention στον άλλον, καθώς βρίσκονται σε διαφορετικές ομάδες.
Ωστόσο, κάθε χρήστης που δεν ανήκει στον έλεγχο πρόσβασης θα μπορεί να έχει πρόσβαση στη σελίδα μας. Για να το αποτρέψουμε αυτό, βεβαιωθείτε ότι κανένας SSO User δεν έχει τα groupIds του ορισμένα σε null. Για παράδειγμα, ας δημιουργήσουμε τον User C, ο οποίος έχει πρόσβαση σε όλα:

Ορίζοντας τα groupIds σε null, δηλώνουμε ότι δεν περιορίζεται από τον έλεγχο πρόσβασης.
Τώρα, ας δημιουργήσουμε μια σελίδα στην οποία έχουν πρόσβαση όλοι:

Ορίζοντας τα accessibleByGroupIds σε null, δηλώνουμε ότι αυτή η Page δεν ελέγχεται μέσω του ελέγχου πρόσβασης, και οι δύο χρήστες μπορούν να έχουν πρόσβαση σε αυτήν.
Με αυτό ολοκληρώνεται η παρουσίαση του API για τον Έλεγχο Πρόσβασης.