# Keresés egy igazi helyi LDAP-direktor

> Kérj egy elszigetelt OpenLDAP példát, és ellenőrizze a kötés eredményét összesen5 0.0.19.

Framework: total5
Product: Total.js 5 (total5@0.0.19)
Language: hu
Content-SHA256: 7762107ffab5b64f769340464d1333884f507fe282d4732849721da0d115f504
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: total5-installed@total5@0.0.19
Review: not-recorded

A `LDAP(options, callback)` a natív olvasó kliens. Az `options.ldap` adja a `host` és `port` értéket; a `user` a bind DN, a `password` a jelszava, a `dn` a keresési bázis, a `type` pedig a kért objektumosztály (`person` vagy `group`). A `type:'profile'` a `login` értékkel keresi az `sAMAccountName` attribútumot, és egy objektumot vagy `null` értéket ad vissza. A `noauth:true` kihagyja a bindot; nem ad jogosultságot a címtárban. Mindig add meg explicit módon a keresési bázist.

Az `attributes` a visszaadott attribútumnevekhez konverziós típusokat rendel (`string`, `number`, `date`, `buffer`, `hex`, `base64` stb.); **nem** engedélyezési lista a lekérendő attribútumokról. A címtár skaláris értékeket vagy tömböket adhat vissza, ha egy attribútum ismétlődik. Korlátozd, hogy a HTTP API milyen adatokat tesz közzé.

Ehhez a futtatható fixture-höz helyi **OpenLDAP** eszközök kellenek: `slapd`, `ldapadd` és a core/cosine/inetorgperson sémafájlok. macOS-en az alábbi alapértékek a rendszereszközöket használják; más telepítések beállíthatják a `FORGE_SLAPD`, `FORGE_LDAPADD` és `FORGE_LDAP_SCHEMA` változókat. Külön, jogosultság nélküli loopback szervert futtat ideiglenes LDIF adatbázissal, majd leállítja. Soha nem használ meglévő címtárat. A teszt a keresést, a több attribútumértéket és az érvénytelen bind határát fedi le; nem igazolja az Active Directory, a TLS/StartTLS, a csoportok vagy az újracsatlakozás viselkedésének kompatibilitását. Soha ne küldj valódi hitelesítő adatokat védetlen hálózaton.

**Válassza ki a kötődés hitelesítését.** Ellenőrizze a kötés eredményét saját kódjában, és csak akkor kezelje a visszaküldött profilot hitelesítve, ha a kötött sikeres.

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