Vyhledejte místní adresář LDAP
LDAP(options, callback) je nativní čtecí klient. options.ldap poskytuje host a port; user je DN bindu, password jeho heslo, dn základ vyhledávání a type požadovaná třída objektu (person nebo group). type:'profile' používá login k vyhledání sAMAccountName a vrací jeden objekt nebo null. noauth:true přeskočí bind; neuděluje oprávnění v adresáři. Základ vyhledávání vždy zadejte explicitně.
attributes mapuje názvy vrácených atributů na typy konverze (string, number, date, buffer, hex, base64 atd.); není to povolený seznam atributů k načtení. Adresář může vrátit skalární hodnoty nebo pole, když se atribut opakuje. Omezte data, která vaše HTTP API zpřístupňuje.
Tento spustitelný fixture vyžaduje lokální nástroje OpenLDAP: slapd, ldapadd a soubory schémat core/cosine/inetorgperson. Na macOS výchozí hodnoty níže používají systémové nástroje; jiné instalace mohou nastavit FORGE_SLAPD, FORGE_LDAPADD a FORGE_LDAP_SCHEMA. Spustí samostatný neprivilegovaný loopback server s dočasnou databází LDIF a poté jej ukončí. Nikdy nepoužívá existující adresář. Test pokrývá vyhledávání, více hodnot atributu a hranici neplatného bindu; nepotvrzuje kompatibilitu s Active Directory, TLS/StartTLS, skupinami ani chování při opětovném připojení. Nikdy neposílejte skutečné přihlašovací údaje přes nechráněnou síť.
Rozhodněte se o ověření z spojení. Zkontrolujte výsledek spojení ve svém vlastním kódu a zpracujte vrácený profil jako autentický pouze po úspěšném spojení
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 })) });
});
}