ForgeTotal.js 5
es

Total.js 5

Consultar un directorio LDAP local real

Total.js 5 · total5@0.0.19 total5reference Ejecutada con Total.js 5

LDAP(options, callback) es el cliente de lectura nativo. options.ldap suministra host y port; user es el DN de enlace, password su contraseña, dn la base de búsqueda y type la clase de objeto solicitada (person o group). type:'profile' usa login para buscar sAMAccountName y devuelve un objeto o null. noauth:true omite el enlace; no otorga permisos de directorio. Especifique siempre una base de búsqueda explícitamente.

attributes asigna nombres de atributos devueltos a tipos de conversión (string, number, date, buffer, hex, base64, etc.); no es una lista permitida de atributos para recuperar. Un directorio puede devolver valores escalares o matrices cuando se repite un atributo. Restrinja los datos que expone su API HTTP.

Este dispositivo ejecutable requiere herramientas OpenLDAP locales: slapd, ldapadd y los archivos de esquema core/cosine/inetorgperson. En macOS, los valores predeterminados a continuación utilizan las herramientas del sistema; otras instalaciones pueden configurar FORGE_SLAPD, FORGE_LDAPADD y FORGE_LDAP_SCHEMA. Ejecuta un servidor loopback independiente y sin privilegios y una base de datos LDIF temporal y luego lo finaliza. Nunca utiliza un directorio existente. La prueba cubre la búsqueda, múltiples valores de atributos y un límite de enlace no válido; no certifica la compatibilidad con Active Directory, TLS/StartTLS, grupos o comportamiento de reconexión. Nunca envíe credenciales reales a través de una red desprotegida.

Decida la autenticación desde el enlace. Verifique el resultado del enlace en su propio código y trate un perfil devuelto como autenticado solo después de que el enlace haya sido exitoso.

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 })) });
	});
}