Μετάβαση στο κύριο περιεχόμενο

Δημόσιο RPC χωρίς άδεια

Αυτή η σελίδα πλαισιώνει το δημόσιο RPC ως πρόταση Bitsocial σε επίπεδο προϊόντος αντί για έναν τοίχο λεπτομερειών υλοποίησης.

Στόχος σε απλή γλώσσα

Το Bitsocial Forge μπορεί να εκτελέσει μια δημόσια υπηρεσία RPC που επιτρέπει σε πολλούς χρήστες να διαχειρίζονται τις δικές τους Bitsocial κοινότητες εξ αποστάσεως, χωρίς να μετατρέπουν τον χειριστή σε θεματοφύλακα αυτών των κοινοτήτων.

Η υπηρεσία θα πρέπει να κάνει τους κινητούς και ελαφρούς πελάτες πρακτικούς, διατηρώντας ταυτόχρονα τρεις περιορισμούς:

  1. Οι χρήστες παραμένουν απομονωμένοι ο ένας από τον άλλο από προεπιλογή.
  2. Τα δικαιώματα παραμένουν σαφή και αναλυτικά.
  3. Η συμβατότητα με το τρέχον αίτημα RPC και το σχήμα απόκρισης μπορεί να διατηρηθεί κατά την κυκλοφορία.

Τι πρόβλημα λύνει

Σήμερα, το απλούστερο μοντέλο RPC είναι συνήθως όλα ή τίποτα: ένα κλειδί auth, ένας τομέας αρχής, πλήρης πρόσβαση. Αυτό λειτουργεί για έναν μόνο χειριστή αλλά όχι για μια δημόσια υπηρεσία πολλών χρηστών.

Ένα δημόσιο RPC χωρίς άδεια χρειάζεται ένα ισχυρότερο μοντέλο:

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

Βασικό μοντέλο

Χρήστες

Κάθε χρήστης λαμβάνει ένα διαπιστευτήριο ταυτότητας συν ένα πακέτο αδειών.

Κοινότητες

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

Άδειες

Τα δικαιώματα βασίζονται σε δυνατότητες. Αντί για ένα boolean για το "can use the RPC", ο διακομιστής μπορεί να ελέγξει:

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

Επιφάνεια διαχειριστή

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

Θέση συμβατότητας

Η τεκμηρίωση που αντιμετωπίζει ο χρήστης θα πρέπει να χρησιμοποιεί όρους Bitsocial όπως κοινότητα και προφίλ.

Σε επίπεδο καλωδίου, η πρώτη κυκλοφορία μπορεί να διατηρήσει το τρέχον σχήμα μεταφοράς και ωφέλιμου φορτίου JSON-RPC όπου αυτό είναι χρήσιμο για συμβατότητα. Με άλλα λόγια: τα έγγραφα μπορούν να παραμείνουν Bitsocial-native ακόμα κι αν η μεταβατική περίοδος διατηρεί ορισμένα ονόματα μεθόδων προσανατολισμένων στη συμβατότητα ή αιτήματα σχημάτων στο παρασκήνιο.

Προτεινόμενο πακέτο αδειών

type PermissionBundle = {
maxCommunities: number; // 0 = unlimited
methods: {
createCommunity: boolean;
startCommunity: boolean;
stopCommunity: boolean;
editCommunity: boolean;
deleteCommunity: boolean;
publishComment: boolean;
publishVote: boolean;
publishCommentEdit: boolean;
publishCommentModeration: boolean;
publishCommunityEdit: boolean;
getComment: boolean;
getCommentPage: boolean;
getCommunityPage: boolean;
fetchContent: boolean;
resolveAuthorAddress: boolean;
commentUpdateSubscribe: boolean;
communityUpdateSubscribe: boolean;
communityListSubscribe: boolean;
settingsSubscribe: boolean;
};
rateLimits: {
requestsPerMinute: number;
publishesPerHour: number;
};
storage: {
maxTotalSize: number;
};
scope: {
canPublishExternal: boolean;
canReadExternal: boolean;
};
admin: {
canTransferOwnership: boolean;
canManageUsers: boolean;
canViewAuditLogs: boolean;
canViewAllCommunities: boolean;
};
};

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

Ροή σύνδεσης

client connects with auth credential
-> server validates the credential
-> server loads the user's permission bundle
-> server returns a permissions notification
-> client proceeds with the subset of actions it is allowed to use

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

Επιβολή ιδιοκτησίας

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

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

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

Προτεινόμενη επιφάνεια χειριστή

Το API διαχειριστή μπορεί να παραμείνει βαρετό και ξεκάθαρο:

  • λίστα χρηστών
  • επιθεωρήστε έναν χρήστη
  • δημιουργία ή ενημέρωση χρηστών
  • διαγραφή χρηστών
  • μεταβίβαση κοινοτικής ιδιοκτησίας
  • επιθεωρήστε τα αρχεία καταγραφής ελέγχου

Ο έλεγχος ταυτότητας για αυτό το API τελεστή θα πρέπει να είναι εντελώς ξεχωριστός από τον έλεγχο ταυτότητας RPC τελικού χρήστη.

Φάσεις διάθεσης

Φάση 1

  • καθιερώστε τη δομή του δημόσιου έργου RPC
  • προσθήκη αρχείων χρήστη και παρακολούθησης ιδιοκτησίας
  • διακλάδωση ή επέκταση του τρέχοντος διακομιστή RPC

Φάση 2

  • να εφαρμόσουν πακέτα αδειών
  • να τα επιβάλετε στο επίπεδο της μεθόδου RPC
  • επιστροφή μεταδεδομένων δικαιωμάτων κατά τη σύνδεση

Φάση 3

  • προσθέστε το API τελεστή
  • προσθήκη καταγραφής ελέγχου
  • προσθήκη ελέγχου ταυτότητας διαχειριστή

Φάση 4

  • αποστολή του πίνακα ελέγχου διαχειριστή
  • ελέγχους κατάχρησης
  • αυστηροποίηση των ποσοστώσεων περιορισμού των επιτοκίων και αποθήκευσης

Ανοιχτές ερωτήσεις

Έλεγχος ανεπιθύμητων διαπιστευτηρίων

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

Λεπτομέρειες μετανάστευσης

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

Περίληψη

Αυτή η πρόταση αφορά πραγματικά ένα πράγμα: να καταστήσει χρήσιμη τη δημόσια υποδομή RPC χωρίς να την καταστήσει θεμελιώδη. Ένα καλό δημόσιο Bitsocial RPC θα πρέπει να μοιάζει σαν προαιρετική βοήθεια για τη λειτουργία κοινοτήτων, όχι σαν μια νέα κεντρική πλατφόρμα που διεκδικεί εκ νέου την ιδιοκτησία από την πίσω πόρτα.