It can be useful to interact from schema-aware/type-safe LDAP Client with LDAP servers like active directory.
npm i ldap-schema-ts-generator
import { Client, IClientConfig } from "ldap-ts-client";
import {
getSchemaAttributes,
getSchemaClasses,
generateInterfaceFiles,
} from "ldap-schema-ts-generator";
const options = {
user: "**********",
pass: "************",
ldapServerUrl: "ldap://domain.com",
baseDn: "DC=domain,DC=com",
};
const client = new Client(options);
const objectAttributes = await getSchemaAttributes({ client });
const objectClasses = await getSchemaClasses({ client });
await generateInterfaceFiles({ objectAttributes, objectClasses });
}
use api website for more details
import { Top } from "./Top";
import { MsExchBaseClass } from "./MsExchBaseClass";
/** - object class: container
* - child of class: top
* - dn: CN=Container,CN=Schema,CN=Configuration,DC=ki,DC=local
*/
export interface Container extends Top, MsExchBaseClass {
/** - attributeSyntax: 2.5.5.12
* - attributeID: 2.5.4.3
* - adminDisplayName: Common-Name
* - adminDescription: Common-Name
* - dn: CN=Common-Name,CN=Schema,CN=Configuration,DC=ki,DC=local
*/
readonly cn: string;
/** - attributeSyntax: 2.5.5.12
* - attributeID: 1.2.840.113556.1.2.508
* - adminDisplayName: ms-Exch-X500-RDN
* - adminDescription: ms-Exch-X500-RDN
* - dn: CN=ms-Exch-X500-RDN,CN=Schema,CN=Configuration,DC=ki,DC=local
*/
x500RDN?: string;
/** - attributeSyntax: 2.5.5.4
* - attributeID: 1.2.840.113556.1.4.7000.102.65
* - adminDisplayName: ms-Exch-Template-RDNs
* - adminDescription: ms-Exch-Template-RDNs
* - dn: CN=ms-Exch-Template-RDNs,CN=Schema,CN=Configuration,DC=ki,DC=local
*/
msExchTemplateRDNs?: string[];
/** - attributeSyntax: 2.5.5.1
* - attributeID: 1.2.840.113556.1.4.7000.102.50004
* - adminDisplayName: ms-Exch-Policy-List
* - adminDescription: ms-Exch-Policy-List
* - dn: CN=ms-Exch-Policy-List,CN=Schema,CN=Configuration,DC=ki,DC=local
*/
msExchPolicyList?: object[];
/** - attributeSyntax: 2.5.5.9
* - attributeID: 1.2.840.113556.1.2.296
* - adminDisplayName: ms-Exch-Container-Info
* - adminDescription: ms-Exch-Container-Info
* - dn: CN=ms-Exch-Container-Info,CN=Schema,CN=Configuration,DC=ki,DC=local
*/
containerInfo?: number;
/** - attributeSyntax: 2.5.5.1
* - attributeID: 1.2.840.113556.1.4.1840
* - adminDisplayName: ms-DS-Object-Reference
* - adminDescription: A link to the object that uses the data stored in the object that contains this attribute.
* - dn: CN=ms-DS-Object-Reference,CN=Schema,CN=Configuration,DC=ki,DC=local
*/
"msDS-ObjectReference"?: object[];
}
// @ts-ignore
added in top of all generated interfacesGenerated using TypeDoc