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

Αναφορά διαμόρφωσης 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).

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 έγγραφο δυνατοτήτων

Όλες οι λειτουργίες 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, ποτέ στη βάση δεδομένων.