npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@winlinux/auth

v1.1.0

Published

Basic, NTLM, Kerberos, Negotiate and CredSSP authentication for the winlinux WinRM and SMB2 clients.

Readme

@winlinux/auth

Authentication for the winlinux WinRM and SMB2 clients: Basic, NTLM, Kerberos, Negotiate (SPNEGO) and CredSSP behind one AuthProvider interface.

Most users want the winlinux package, which wires this package to WinRM and SMB2. Use this package directly only to supply an AuthProvider to @winlinux/winrm or @winlinux/smb2.

npm install @winlinux/auth
import { createAuthProvider } from '@winlinux/auth';

const authProvider = createAuthProvider('negotiate'); // 'basic' | 'ntlm' | 'kerberos' | 'negotiate' | 'credssp'
const credentials = { username: 'alice', password: process.env.WINLINUX_PASSWORD, domain: 'CORP' };
// Pass both to connect() of @winlinux/winrm or @winlinux/smb2.
  • NTLM: NTLMv2 only, with MIC, mechListMIC and channel bindings.
  • Kerberos: a password (kinit into a private temp ccache), a keytab (credentials.keytab) or the ticket cache (useTicketCache: true). It uses the optional @winlinux/krb-session-key addon when it loads, and the kerberos package otherwise. Only the addon gives the session key that SMB2 signing and WinRM encryption over HTTP need. kerberosSessionKeyAvailable() says whether the addon loaded. With the addon, a Kerberos context also binds its AP-REQ to the channelBindings the consumer sets on the target before the first step (the RFC 5929 tls-server-end-point binding over TLS, as NTLM does); the kerberos package sends none. channelBound on the context says which happened.
  • The kerberos package is optional. Both Kerberos back ends are optionalDependencies, and both are native addons. A consumer that uses NTLM or Basic only can install with npm install @winlinux/auth --omit=optional: no native build runs, and createAuthProvider('ntlm') and createAuthProvider('basic') work as usual. Without either back end, the first step of a 'kerberos' context fails with an error that says npm install kerberos. A 'negotiate' context with a password falls back to NTLM, as for any client-side Kerberos failure; with the ticket cache alone (no password) it fails with the same error. The winlinux package depends on kerberos, so the CLI keeps Kerberos out of the box.
  • CredSSP sends the password to the server. Only an explicit 'credssp' selects it; negotiate never does.

The interface is the auth contract v1.2 (docs/contracts/auth-provider.md in the repository).

ESM only, Node.js 22 or later. MIT license.