lexmount-extra
v0.1.2
Published
Extra utilities for Lexmount JavaScript SDK projects.
Downloads
13
Readme
lexmount-extra
Extra utilities for Lexmount JavaScript SDK projects.
Install
npm install lexmount-extraOn Windows, the package builds a small native addon for NTLM integrated authentication. Make sure the machine has a working node-gyp toolchain, including Python and Visual Studio Build Tools with the C++ workload.
Usage
import {
createKerberosAuthCallback,
createNTLMAuthCallback,
generateKerberosToken,
generateNTLMChallengeToken,
generateNTLMResponseToken
} from "lexmount-extra";
const type1Token = generateNTLMChallengeToken("web.lab.local", "LAB");
const type3Token = generateNTLMResponseToken(
"http://web.lab.local/",
"web.lab.local",
"LAB",
"NTLM <server-type2-token>",
"alice",
"P@ssw0rd123!"
);
const kerberosToken = await generateKerberosToken(
"[email protected]",
"server-token"
);Lexmount authentication callbacks
import {
createKerberosAuthCallback,
createNTLMAuthCallback
} from "lexmount-extra";
const ntlmAuth = createNTLMAuthCallback({
hostname: "web.lab.local",
domain: "LAB"
});
const kerberosAuth = createKerberosAuthCallback({
hostname: "web.lab.test"
});Both callback factories can be called without options. NTLM defaults to USERDNSDOMAIN and USERDOMAIN when those environment variables exist. Kerberos derives the HTTP@host service principal from the authentication challenge origin when neither spn nor hostname is provided.
NTLM integrated authentication
Windows NTLM generation always uses the native SSPI addon. Type 1 and Type 3 tokens both support explicit username/password credentials, and Type 3 can also use the current Windows logon session when credentials are omitted. The Lexmount callback keeps the SSPI context between Type 1 and Type 3 by using the request's frameId and requestId.
Non-Windows platforms use httpntlm. They support Type 1 and Type 3 with explicit username/password credentials; Type 3 without credentials returns an empty token.
Scripts
npm run build- compile TypeScript intodist/.npm run build:native- force a local native addon rebuild.npm run docs- generate Typedoc documentation intodocs/.npm run clean- remove generateddist/anddocs/folders.
