ForgeTotal.js 5
el

Total.js 5

Αναζητήστε ένα πραγματικό τοπικό κατάλογο LDAP

Total.js 5 · total5@0.0.19 total5reference Εκτελέστηκε με το Total.js 5

Το LDAP(options, callback) είναι ο εγγενής πελάτης ανάγνωσης. Το options.ldap παρέχει host και port· το user είναι το DN του bind, το password ο κωδικός του, το dn η βάση αναζήτησης και το type η ζητούμενη κλάση αντικειμένου (person ή group). Το type:'profile' χρησιμοποιεί το login για αναζήτηση του sAMAccountName και επιστρέφει ένα αντικείμενο ή null. Το noauth:true παραλείπει το bind· δεν παραχωρεί δικαιώματα στον κατάλογο. Ορίζετε πάντα ρητά μια βάση αναζήτησης.

Το attributes αντιστοιχίζει ονόματα επιστρεφόμενων χαρακτηριστικών σε τύπους μετατροπής (string, number, date, buffer, hex, base64 κ.λπ.)· δεν είναι λίστα επιτρεπόμενων χαρακτηριστικών προς ανάκτηση. Ένας κατάλογος μπορεί να επιστρέψει βαθμωτές τιμές ή πίνακες όταν ένα χαρακτηριστικό επαναλαμβάνεται. Περιορίστε τα δεδομένα που εκθέτει το HTTP API σας.

Αυτό το εκτελέσιμο fixture απαιτεί τοπικά εργαλεία OpenLDAP: slapd, ldapadd και τα αρχεία σχημάτων core/cosine/inetorgperson. Στο macOS οι προεπιλογές παρακάτω χρησιμοποιούν τα εργαλεία του συστήματος· άλλες εγκαταστάσεις μπορούν να ορίσουν FORGE_SLAPD, FORGE_LDAPADD και FORGE_LDAP_SCHEMA. Εκτελεί έναν ξεχωριστό διακομιστή loopback χωρίς προνόμια με προσωρινή βάση LDIF και μετά τον τερματίζει. Δεν χρησιμοποιεί ποτέ υπάρχοντα κατάλογο. Το τεστ καλύπτει αναζήτηση, πολλαπλές τιμές χαρακτηριστικού και ένα όριο μη έγκυρου bind· δεν πιστοποιεί συμβατότητα με Active Directory, TLS/StartTLS, ομάδες ή συμπεριφορά επανασύνδεσης. Μη στέλνετε ποτέ πραγματικά διαπιστευτήρια μέσω μη προστατευμένου δικτύου.

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

controllers/directory.js
exports.install = function() {
	ROUTE('POST /directory-fixture/ @json', directory);
};
function directory($) {
	var port = Number($.body.port);
	if (!Number.isInteger(port) || port < 1024 || port > 65535)
		return $.invalid(400);
	LDAP({
		ldap: { host: '127.0.0.1', port: port },
		user: 'cn=admin,dc=forge,dc=test',
		password: $.body.wrong ? 'incorrect' : 'local-fixture-only',
		dn: 'dc=forge,dc=test',
		type: 'person',
		attributes: { cn: 'string', mail: 'string' }
	}, function(err, people) {
		if (err)
			$.json({ failed: true });
		else
			$.json({ people: people.map(person => ({ cn: person.cn, mail: person.mail })) });
	});
}