# @lucaselb/node-sp-auth-config

> Config options builder for node-sp-auth (SharePoint Authentication in Node.js)

Latest version **3.1.2** (published 2023-01-27) · MIT license · 0 weekly downloads

## Install

```sh
npm install @lucaselb/node-sp-auth-config
pnpm add @lucaselb/node-sp-auth-config
yarn add @lucaselb/node-sp-auth-config
bun add @lucaselb/node-sp-auth-config
```

Provides the command `sp-auth`.

## Health

**Score 20/100 (F)** — status: abandoned.

Positive: has types; no vulnerabilities.

Warnings: low downloads; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 3.1.2 |
| Published | 2023-01-27 |
| First published | 2023-01-26 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | CommonJS |
| Dependencies | 6 |
| Unpacked size | 139.7 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 0 |
| Author | Andrew Koltyakov |
| Maintainers | lucaselb |
| Keywords | sharepoint, config, authentication, node-sp-auth, wizard |

## Links

- npm: https://www.npmjs.com/package/@lucaselb/node-sp-auth-config
- Repository: https://github.com/lucaselb/node-sp-auth-config
- Homepage: https://github.com/lucaselb/node-sp-auth-config#readme
- Issues: https://github.com/lucaselb/node-sp-auth-config/issues
- npm.io page: https://npm.io/package/@lucaselb/node-sp-auth-config

## Dependencies (6)

- [cpass](https://npm.io/package/cpass.md) ^2.3.0
- [colors](https://npm.io/package/colors.md) ^1.4.0
- [mkdirp](https://npm.io/package/mkdirp.md) ^1.0.4
- [inquirer](https://npm.io/package/inquirer.md) ^8.2.4
- [commander](https://npm.io/package/commander.md) ^9.4.0
- [@lucaselb/node-sp-auth](https://npm.io/package/@lucaselb/node-sp-auth.md) ^3.1.1

## Alternatives

- [@clerk/clerk-expo](https://npm.io/package/@clerk/clerk-expo.md) — 133.6K weekly downloads
- [@pothos/plugin-authz](https://npm.io/package/@pothos/plugin-authz.md) — 12.4K weekly downloads
- [@bounded-sh/client](https://npm.io/package/@bounded-sh/client.md) — 3.2K weekly downloads
- [@luigi-project/plugin-auth-oauth2](https://npm.io/package/@luigi-project/plugin-auth-oauth2.md) — 2.3K weekly downloads
- [@nocobase/plugin-verification](https://npm.io/package/@nocobase/plugin-verification.md) — 2.0K weekly downloads

## Recent versions

- 3.1.2 (latest) — 2023-01-27
- 3.1.1 — 2023-01-27
- 3.1.0 — 2023-01-27
- 3.0.6 — 2023-01-26

## README

# node-sp-auth-config - Config options builder for node-sp-auth (SharePoint Authentication in Node.js)

`node-sp-auth-config` provides wizard-like approach for building and managing config files for [node-sp-auth](https://github.com/s-KaiNet/node-sp-auth) (Node.js to SharePoint unattended http authentication). Includes CLI for generating config files from command prompt.

Versions supported:

- SharePoint Online
- SharePoint 2019
- SharePoint 2016
- SharePoint 2013

Authentication options:

- SharePoint 2013, 2016, 2019:
  - Addin only permissions
  - User credentials through the http ntlm handshake
  - Form-based authentication (FBA)
  - Forefront TMG authentication
- SharePoint Online:
  - Addin only permissions
  - SAML based with user credentials
  - ADFS user credentials (works with both SharePoint on-premise and Online)

---

## How to use

### Install

```bash
npm install @lucaselb/node-sp-auth-config --save
```

or install globally to use as CLI:

```bash
npm install @lucaselb/node-sp-auth-config -g
```

### Usage as CLI

```bash
sp-auth init --path ./config/private.config.json
sp-auth --help # for help about parameters
```

### Usage in TypeScript

```javascript
import { AuthConfig } from '@lucaselb/node-sp-auth-config';

const authConfig = new AuthConfig({
  configPath: './config/private.json',
  encryptPassword: true,
  saveConfigOnDisk: true
});

authConfig.getContext()
  .then(context => {
    console.log(JSON.stringify(context, null, 2));
    // context.authOptions - node-sp-auth authentication options
  })
  .catch(console.warn);
```

### Usage in JavaScript

```javascript
const AuthConfig = require('@lucaselb/node-sp-auth-config').AuthConfig;

const authConfig = new AuthConfig({
  configPath: './config/private.json',
  encryptPassword: true,
  saveConfigOnDisk: true
});

authConfig.getContext()
  .then(context => {
    console.log(JSON.stringify(context, null, 2));
    // context.authOptions - node-sp-auth authentication options
  })
  .catch(console.warn);
```

#### Initiation parameters

| Parameter | Default value | Description |
| --- | --- | --- |
| configPath | '`./config/private.json`' | Path to auth config `.json` |
| encryptPassword | `true` | Encrypt password to a machine-bind hash |
| saveConfigOnDisk | `true` | Save config `.json` to disk |
| forcePrompts | `false` | Force parameters prompts |
| headlessMode | `false` | Prevents interactive prompts - for headless, CI/CD processes |
| defaultConfigPath | empty | Path to `.json` config, parameters from which are placed as defaults |
| authOptions | empty | Any valid `node-sp-auth` options |

### Production runtime

#### Headless mode

When using in a headless mode, in case of missing parameters, one can expect non-interactive behavior with no prompts but graceful exit with corresponding error output.

This can be achieved by providing `headlessMode` settings property is equal to `true`.

The headless mode also automatically configured when `NODE_ENV` (or `SPAUTH_ENV`) environment variable is equal to `production`.

#### Environment variables

All the parameters which are usually stored in `private.json` can be defined also using environment variables. Environment variables started with `SPAUTH_` prefix are recognized with the library. Second part of the name is an actual name of the `node-sp-auth` credentials property yet in uppercase (e.g. `SPAUTH_SITEURL`, `SPAUTH_USERNAME`, `SPAUTH_PASSWORD`).

Along with credentials props these service variables are used:

| Variable | Description |
| --- | --- |
| `NODE_ENV` | When equal to `production` forces `headlessMode`. |
| `SPAUTH_ENV` | When equal to `production` forces `headlessMode`. Overwrites `NODE_ENV`. |
| `SPAUTH_FORCE` | Makes `SPAUTH_{CREDENTIALS}` variables take precedence over those possibly stored in `private.json`. |

---
_Source: https://npm.io/package/@lucaselb/node-sp-auth-config · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
