Αναφορά διαμόρφωσης SSO
Ό,τι μπορεί να διαμορφωθεί για την ενιαία σύνδεση, σε ένα σημείο. Οι τιμές
ζουν στις γραμμές sso_connections του global.db (σκόπιμα σε εμβέλεια
διακομιστή) και τις επεξεργάζεστε μέσω Ρυθμίσεις → Διακομιστής → Ενιαία
σύνδεση ή των λειτουργιών RPC sso.*. Η αποθηκευμένη γραμμή είναι η μόνη
πηγή αλήθειας — δεν υπάρχει διαδρομή μεταβλητών περιβάλλοντος CC_SAML_* /
CC_OIDC_* (μια σύνδεση που θα μπορούσε να φτάσει από δύο μέρη είναι μια
σύνδεση με την οποία μπορεί να διαφωνήσει η οθόνη ρυθμίσεων).
Πεδία σύνδεσης
Ενότητα με τίτλο «Πεδία σύνδεσης»| Πεδίο | Ισχύει για | Προεπιλογή | Σημασία |
|---|---|---|---|
enabled |
και τα δύο | ανενεργό | οι χρήστες μπορούν να συνδεθούν μέσω αυτής της σύνδεσης |
idpMetadataXml |
SAML | — | το XML EntityDescriptor του IdP (απαιτείται για ενεργοποίηση) |
spEntityId |
SAML | <origin>/saml |
το αναγνωριστικό οντότητάς μας, καρφιτσωμένο όταν η προέλευση μεταβάλλεται |
emailAttribute |
SAML | email |
χαρακτηριστικό που φέρει το email· ένα NameID σε μορφή email είναι η εφεδρική επιλογή |
displayNameAttribute |
SAML | displayName |
χαρακτηριστικό εμφανιζόμενου ονόματος |
groupsAttribute |
SAML | groups |
χαρακτηριστικό ονομάτων ομάδων |
clockSkewSeconds |
SAML | 90 | περιθώριο απόκλισης κατά την επικύρωση διάρκειας ζωής |
allowIdpInitiated |
SAML | ανενεργό | αποδοχή μη ζητηθέντων Responses (χωρίς InResponseTo) |
wantResponseSigned |
SAML | ανενεργό | απαίτηση υπογραφής στη ρίζα του Response (οι υπογραφές assertion απαιτούνται πάντα) |
issuer |
OIDC | — | βασικό URL εκδότη (απαιτείται για ενεργοποίηση) |
clientId |
OIDC | — | Client ID δημόσιου πελάτη (απαιτείται για ενεργοποίηση) |
clientSecret |
OIDC | — | μόνο για εμπιστευτικούς πελάτες· αποθηκεύεται στο αρχείο μυστικών 0600, ποτέ στη βάση δεδομένων — μόνο εγγραφής μέσω RPC (το sso.getConfig αναφέρει το clientSecretPresent) |
groupsClaim |
OIDC | groups |
διεκδίκηση που φέρει ονόματα ομάδων |
defaultRole |
και τα δύο | member |
ρόλος όταν δεν αντιστοιχίζεται καμία ομάδα — ποτέ owner |
groupRoleMap |
και τα δύο | {} |
ομάδα → ρόλος· οι αντιστοιχίσεις ιδιοκτήτη απορρίπτονται κατά την αποθήκευση |
autoMember |
και τα δύο | ενεργό | αυτόματη προσθήκη χρηστών σε κάθε χώρο εργασίας στην πρώτη σύνδεση |
allowJit |
και τα δύο | ενεργό | παροχή άγνωστων χρηστών κατά τη σύνδεση |
Διαμόρφωση διεργασίας
Ενότητα με τίτλο «Διαμόρφωση διεργασίας»Οι συνδέσεις SSO δεν αρχικοποιούνται από το περιβάλλον. Ένα εναπομείναν flag διεργασίας αφορά τη μεταβίβαση στο πρόγραμμα περιήγησης, όχι τη γραμμή σύνδεσης:
| Μεταβλητή / flag | Σημασία |
|---|---|
--web-client-url / CC_SERVER_WEB_CLIENT_URL |
η προέλευση στην οποία τα callbacks SSO αναπηδούν το πρόγραμμα περιήγησης (το διαπιστευτήριο ταξιδεύει στο fragment του URL). Αν δεν οριστεί, η μεταβίβαση παραμένει στην ίδια προέλευση. |
Το ίδιο το URL του εκδότη πρέπει να είναι https (το http γίνεται δεκτό
μόνο για εκδότες loopback localhost, 127.0.0.1 και ::1).
Endpoints HTTP
Ενότητα με τίτλο «Endpoints HTTP»| Endpoint | Αυθεντικοποίηση | Σκοπός |
|---|---|---|
GET /saml/login?relay=… |
καμία (ανακατεύθυνση) | έναρξη σύνδεσης με πρωτοβουλία του SP· το relay=desktop μεταβιβάζει στην εφαρμογή, το relay=web-popup στέλνει postMessage στην καρτέλα σύνδεσης που περιμένει (η οποία δηλώνει το client_origin της — γίνεται σεβαστό μόνο όταν το εμπιστεύεται η λίστα επιτρεπόμενων προελεύσεων) |
POST /saml/acs |
καμία (IdP POST) | ο καταναλωτής assertion — επαληθεύει, παρέχει και εκδίδει |
GET /saml/metadata |
καμία | το EntityDescriptor SP μας |
GET /oidc/login?relay=… / GET /oidc/callback |
καμία | ο κύκλος ανταλλαγής OIDC· το relay=desktop μεταβιβάζει στην εφαρμογή και το relay=web-popup στην καρτέλα σύνδεσης που περιμένει (ίδια σύμβαση client_origin) |
GET /auth/providers |
καμία, CORS * |
ο έλεγχος της οθόνης σύνδεσης: οι προσφερόμενες συνδέσεις SSO (id/kind/label) + pairingEnabled |
/scim/v2/Users… |
Bearer (token SCIM) | Δημιουργία/ανάκτηση/λίστα+φίλτρο/PUT/PATCH/DELETE χρηστών |
/scim/v2/Groups |
Bearer | μόνο ανάγνωση· η ώθηση ομάδων απαντά 501 εκ σχεδιασμού |
/scim/v2/ServiceProviderConfig |
Bearer | έγγραφο δυνατοτήτων |
Λειτουργίες RPC
Ενότητα με τίτλο «Λειτουργίες RPC»Όλες οι λειτουργίες sso.* έχουν εμβέλεια διακομιστή και είναι διαθέσιμες
μόνο στον ιδιοκτήτη του διακομιστή (τον χειριστή της εγκατάστασης,
ServerAuthority.serverOwner). Η κυριότητα ενός χώρου εργασίας δεν αρκεί· η
σύζευξη από μόνη της δεν τις εκχωρεί ποτέ.
| Λειτουργία | Σκοπός |
|---|---|
sso.getConfig |
η αποθηκευμένη σύνδεση για ένα είδος |
sso.saveConfig |
επικύρωση, μόνιμη αποθήκευση και ζωντανή εφαρμογή |
sso.status |
flags ενεργοποίησης/διαμόρφωσης, παρουσία token SCIM, κανονική προέλευση |
sso.testConnection |
δοκιμή μιας σύνδεσης χωρίς τον κύκλο ανταλλαγής μέσω προγράμματος περιήγησης (SAML: ανάλυση μεταδεδομένων + δημιουργία AuthnRequest· OIDC: ανακάλυψη εκδότη), με προαιρετικές μη αποθηκευμένες τιμές της οθόνης |
sso.spMetadata |
παραγωγή του EntityDescriptor SP για μια προέλευση |
sso.setPairingEnabled |
επιτρέπει/απαγορεύει τη χειροκίνητη σύζευξη (κωδικοί πρόσκλησης, κλειδιά σύζευξης)· η άρνηση απενεργοποίησής της όσο δεν υπάρχει λειτουργική σύνδεση SSO προστατεύει από κλείδωμα |
sso.sessionPolicy |
ανάγνωση της μέγιστης ηλικίας του διαπιστευτηρίου συσκευής και του χρόνου αδράνειας της εγκατάστασης (σε λεπτά· 0 = μη ορισμένο) |
sso.setSessionPolicy |
ορισμός αυτών των ορίων· επιβάλλονται στον έλεγχο της συσκευής, δεν ανακοινώνονται στους πελάτες |
sso.scimRegenerateToken |
δημιουργία + επιστροφή του bearer token SCIM (μία φορά) |
Κωδικοί σφάλματος επικύρωσης
Ενότητα με τίτλο «Κωδικοί σφάλματος επικύρωσης»Οι αποτυχίες του cc_saml_verify_response φέρουν σταθερό κωδικό:
| Κωδικός | Σημασία |
|---|---|
signature |
υπογραφή που λείπει/δεν είναι αξιόπιστη/έχει παραποιηθεί, ή μη επιτρεπόμενος αλγόριθμος/μετασχηματισμός |
expired |
εκτός NotBefore/NotOnOrAfter (πέρα από την απόκλιση) |
audience |
ο περιορισμός audience δεν κατονομάζει εμάς |
destination |
ο προορισμός της απάντησης δεν είναι το ACS μας |
request_match |
το InResponseTo δεν ταιριάζει με κάποιο εκκρεμές αίτημα, ή είναι μη ζητηθέν ενώ αυτό απαγορεύεται |
issuer |
ο εκδότης δεν είναι ο διαμορφωμένος IdP |
recipient |
ο παραλήπτης επιβεβαίωσης υποκειμένου δεν είναι το ACS μας |
malformed |
αποτυχία σε επίπεδο XML/schema |
status |
η κατάσταση που ανέφερε ο IdP δεν ήταν Success |
invalid / internal |
οτιδήποτε άλλο / αποτυχία ραφής |
Επιφάνειες βάσης δεδομένων
Ενότητα με τίτλο «Επιφάνειες βάσης δεδομένων»sso_connections(global.db) — μία γραμμή ανά είδος, ΣΕ ΟΛΟΥΣ ΤΟΥΣ ΧΩΡΟΥΣ ΕΡΓΑΣΙΑΣ ΕΚ ΣΧΕΔΙΑΣΜΟΥ.users.sso_subject+users.sso_issuer— το καρφίτσωμα υποκειμένου παρόχου, μοναδικό ανά(issuer, subject)μέσω μερικού ευρετηρίου.users.deactivated_at— η σφραγίδα απενεργοποίησης SCIM.- Το bearer token SCIM και το μυστικό πελάτη OIDC ζουν στο αρχείο μυστικών 0600, ποτέ στη βάση δεδομένων.