tamascsaba / node-rs-krb5

Prebuilt kerberus native binding for nodejs written with pure rust.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

node-rs-krb5

CI install size Downloads

Prebuilt node kerberus native binding written by pure rust. It is based on node-krb5 (huge thx for @gboutry πŸ™), but you don't need to compile the library. node-rs-krb5 uses napi-rs, which is a Rust based framework for building pre-compiled Node.js addons. We are supporting all the main platforms (mac, linux, windows) and CPU architectures (arm64, x64).

Features

  • πŸ‘·β€β™‚οΈ Prebuilt for all the main platforms (Mac, Linux, Windows)
  • 🀘 You don't need to intstall python, xcode or visual studio compile chain
  • πŸ“ TypeScript type defininition support
  • πŸš€ Bring native performance for Node.js
  • 🦺 Memory safe, guaranteed by Rust compiler
  • 🍳 Similar API than krb5 node package

Install

yarn add node-rs-krb5
npm install -S node-rs-krb5

Support matrix

node18 node20 node21
Windows x64 βœ“ βœ“ βœ“
macOS x64 βœ“ βœ“ βœ“
macOS arm64 (m chips) βœ“ βœ“ βœ“
Linux x64 gnu βœ“ βœ“ βœ“

Feel free to create an issue if you need other CPU architecture support. πŸ₯° Initially, I only added the basics.

Requirements of the usage

You need to install the MIT Kerberos library.

  • Mac

    brew install krb5
    
  • Linux

    pacman -S krb5
    yum install -y krb5-libs
    apt-get install libkrb5-3
    
  • Windows

    choco install mitkerberos
    

Usage

import { kinit, spnego } from 'node-rs-krb5';

kinit({
  principal: 'admin',
  password: 'adm1n_p4ssw0rd',
  realm: 'KRB.LOCAL',
  ccname: '/tmp/customcc'
}).then(ccname => {
  console.log('Credentials saved in', ccname);
  return spnego({
    hostbased_service: 'HTTP@m01.krb.local'
  });
}).then(token => {
  console.log('SPNEGO token :', token);
}).catch(err => {
  console.log(err);
});

About

Prebuilt kerberus native binding for nodejs written with pure rust.


Languages

Language:Rust 79.4%Language:JavaScript 18.6%Language:C 1.7%Language:TypeScript 0.3%