OAuth2
Η πιστοποίηση OAuth2 ρυθμίζεται στο config/authentication.yaml. Το Chamilo περιλαμβάνει ενσωματωμένη υποστήριξη για Azure AD, Keycloak, Facebook και οποιονδήποτε γενικό πάροχο συμβατό με OAuth2.
Step 1 — Register Chamilo in your identity provider
Δημιουργήστε μια εφαρμογή στον πίνακα διαχείρισης του παρόχου σας και ορίστε το redirect URI σε:
https://your-chamilo-url/connect/<provider>/checkΌπου <provider> είναι azure, keycloak, facebook ή το όνομα που δίνετε σε έναν γενικό πάροχο. Σημειώστε το Client ID και το Client Secret.
Step 2 — Configure authentication.yaml
Ενεργοποιήστε τον πάροχο και δώστε τα διαπιστευτήριά του. Όλοι οι πάροχοι μοιράζονται αυτά τα κοινά κλειδιά:
enabled
true για ενεργοποίηση
title
Ετικέτα που εμφανίζεται στο κουμπί σύνδεσης
client_id
Από τον πάροχο ταυτότητας
client_secret
Από τον πάροχο ταυτότητας
allow_create_new_users
Αυτόματη δημιουργία λογαριασμού Chamilo στην πρώτη σύνδεση
allow_update_user_info
Συγχρονισμός δεδομένων χρήστη σε κάθε σύνδεση
force_as_login_method
Απόκρυψη των άλλων μεθόδων και εμφάνιση μόνο του κουμπιού αυτού του παρόχου
force_redirect
Αυτόματη αποστολή ανώνυμου επισκέπτη σε αυτόν τον πάροχο, χωρίς κουμπί προς κλικ
skip_force_redirect_in
Λίστα τμημάτων URL που το force_redirect αφήνει ανέπαφα
Azure AD (Microsoft Entra ID)
Το Azure διαθέτει δική του ειδική σελίδα που καλύπτει την καταχώριση εφαρμογής, την αντιστοίχιση ρόλων βάσει ομάδων, την πιστοποίηση με πιστοποιητικό και τις εντολές συγχρονισμού παροχής λογαριασμών — δείτε Azure Entra ID.
Keycloak
Generic OAuth2
Χρησιμοποιήστε αυτό για Google, GitLab ή οποιονδήποτε πάροχο συμβατό με OAuth2:
Η αντιστοίχιση πεδίων (πώς τα χαρακτηριστικά του παρόχου αντιστοιχίζονται στα firstname, lastname, email κ.λπ. του Chamilo) και η αντιστοίχιση ρόλων είναι επίσης ρυθμιζόμενες. Δείτε το wiki για την πλήρη λίστα κλειδιών αντιστοίχισης.
Optional — Send every visitor to the provider automatically
Δύο κλειδιά ελέγχουν πόσο από τη σελίδα σύνδεσης βλέπει ακόμη ο επισκέπτης. Είναι ανεξάρτητα και καλύπτουν διαφορετικές ανάγκες:
force_as_login_method: true
Η σελίδα σύνδεσης, περιορισμένη στο κουμπί αυτού του παρόχου. Ο επισκέπτης το πατάει.
force_redirect: true
Καμία σελίδα σύνδεσης. Το πρόγραμμα περιήγησης πηγαίνει μόνο του στον πάροχο.
Χρησιμοποιήστε το force_redirect όταν ο πάροχος ταυτότητας κατέχει κάθε λογαριασμό και η τοπική φόρμα σύνδεσης δεν έχει λόγο ύπαρξης:
Μόνο ένας πάροχος μπορεί να επιβάλει την ανακατεύθυνση. Αν πολλοί την δηλώνουν, υπερισχύει ο πρώτος ενεργοποιημένος. Το LDAP δεν μπορεί να την δηλώσει, επειδή πιστοποιεί μέσω της τοπικής φόρμας.
Η ανακατεύθυνση ισχύει για μια σελίδα που εμφανίζει το πρόγραμμα περιήγησης και για τίποτα άλλο. Αυτά τα αιτήματα παραμένουν πάντα εκεί που είναι:
Κλήση API, SCIM, MCP ή XHR, που δεν μπορεί να ακολουθήσει χειραψία προορισμένη για πρόγραμμα περιήγησης.
Εικόνα, φύλλο στυλ ή λήψη αρχείου.
Οποιαδήποτε εγγραφή (POST, PUT, DELETE), επειδή το πρόγραμμα περιήγησης επαναλαμβάνει μια ανακατευθυνόμενη εγγραφή ως GET και απορρίπτει το σώμα.
Η ίδια η χειραψία του παρόχου (
/connect/...) και το/logout, που διαφορετικά θα δημιουργούσαν ατέρμονο βρόχο.Επισκέπτης που έχει ήδη συνεδρία, συμπεριλαμβανομένου του ανώνυμου λογαριασμού δημόσιου μαθήματος.
Προσθέστε ένα τμήμα URL στο skip_force_redirect_in για κάθε δημόσια περιοχή που πρέπει να παραμένει ανοιχτή, όπως ένας κατάλογος μαθημάτων.
Η έξοδος κινδύνου
Ένας μη προσβάσιμος πάροχος θα κλείδωνε κάθε λογαριασμό, συμπεριλαμβανομένου του τοπικού διαχειριστή. Προσθέστε skipForcedRedirect=1 σε οποιοδήποτε URL για να φτάσετε ούτως ή άλλως στη φόρμα τοπικής σύνδεσης:
Η επιλογή παραμένει στη συνεδρία, ώστε οι σελίδες που ακολουθούν να συνεχίζουν να εμφανίζουν τη φόρμα. Ακυρώνει επίσης το force_as_login_method για εκείνη τη συνεδρία, γεγονός που επαναφέρει κάθε μέθοδο σύνδεσης στη σελίδα. Για να επιστρέψετε την πλατφόρμα στον πάροχο, χρησιμοποιήστε ?skipForcedRedirect=0, ή κλείστε τη συνεδρία του προγράμματος περιήγησης.
Η παράμετρος ανήκει αποκλειστικά στο force_redirect. Όσο κανένας πάροχος δεν δηλώνει αυτό το κλειδί, η παράμετρος δεν κάνει τίποτα απολύτως, και το force_as_login_method διατηρεί το μοναδικό του κουμπί.
Κρατήστε αυτό το URL μαζί με τις σημειώσεις ανάκτησής σας. Δοκιμάστε το πριν ενεργοποιήσετε το force_redirect σε παραγωγή.
Βήμα 3 — Εκκαθάριση cache και δοκιμή
Αποσυνδεθείτε από το Chamilo. Το κουμπί του ρυθμισμένου παρόχου θα πρέπει να εμφανίζεται στη σελίδα σύνδεσης. Δοκιμάστε με έναν αποκλειστικό λογαριασμό πριν την ανάπτυξη σε όλους τους χρήστες.
Συμβουλές
Διατηρήστε ενεργοποιημένη την τυπική φόρμα σύνδεσης ώστε οι διαχειριστές να μπορούν πάντα να συνδεθούν αν το OAuth2 παρουσιάσει προβλήματα. Αν ορίσετε
force_redirect, μάθετε αντί αυτού το URL?skipForcedRedirect=1: είναι ο μοναδικός τρόπος επιστροφής σε εκείνη τη φόρμα.Η ανάθεση ρόλων προεπιλέγεται σε φοιτητή· χρησιμοποιήστε αντιστοίχιση ομάδων (Azure) για να προάγετε αυτόματα χρήστες σε ρόλους εκπαιδευτή ή διαχειριστή — δείτε το Azure Entra ID για λεπτομέρειες σχετικά με αυτό και με την αντιστοίχιση εισερχόμενων χρηστών σε υπάρχοντες λογαριασμούς.
Τελευταία ενημέρωση
Ήταν χρήσιμο αυτό;