node-sp-auth allows you to perform SharePoint unattended (without user interaction) http authentication with nodejs using different authentication techniques. node-sp-auth also takes care about caching authentication data for performance (no need for you to think about how long authentication will be available, that's a task for node-sp-auth, as soon as authentication will be expired, node-sp-auth will renew it internally).
Versions supported:
- SharePoint 2013, 2016
- SharePoint Online
Authentication options:
- SharePoint 2013, 2016:
- Addin only permissions
- User credentials through the http ntlm handshake
- Form-based authentication (FBA)
- SharePoint Online:
- Addin only permissions
- SAML based with user credentials
- ADFS user credentials (works with both SharePoint on-premise and Online)
Wiki contains detailed steps you need to perform in order to use any of authentication options as well as sample using.
npm install node-sp-auth --save-devvar spauth = require('node-sp-auth');
var request = require('request-promise');
//get auth options
spauth.getAuth(url, credentialOptions)
.then(function(options){
//perform request with any http-enabled library (request-promise in a sample below):
var headers = options.headers;
headers['Accept'] = 'application/json;odata=verbose';
request.get({
url: 'https://[your tenant].sharepoint.com/sites/dev/_api/web',
headers: headers
}).then(function(response){
//process data
});
});Promise resolving into object with following properties:
headers- http headers (normally containAuthorizationheader, may contain any other heraders as well)options- any additional options you may need to include for succesful request. For example, in case of on premise user credentials authentication, you need to setagentproperty on corresponding http client
url- string, url to SharePoint site,https://sp2013/sites/dev/orhttps:/[your tenant].sharepoint.com/sites/dev/credentialOptions- object in a form of key-value. Each authentication option requires predefined credential object, depending on authentication type. Based on credentials provided,node-sp-authautomatically determines which authentication strategy to use (strategies listed in the top of the readme file).
Possible values for credentialOptions (depending on authentication strategy):
-
SharePoint on premise (2013, 2016):
- Addin only permissions:
clientId,issuerId,realm,rsaPrivateKeyPath,shaThumbprint - User credentials through the http ntlm handshake:
username,password,domain,workstation - User credentials for form-based authentication (FBA):
username,password,fba= true
- Addin only permissions:
-
SharePoint Online:
- Addin only permissions:
clientId,clientSecret - SAML based with user credentials
username,password
- Addin only permissions:
-
ADFS user credentials:
username,password,relyingParty,adfsUrl,adfsCookie
Please, use Wiki to see how you can configure your environment in order to use any of this authentication options.
I recommend using VS Code for development. Repository already contains some settings for VS Code editor.
Before creating Pull Request you need to create an appropriate issue and reference it from PR.
git clone https://github.com/s-KaiNet/node-sp-auth.gitnpm run build- restores dependencies and runs typescript compilationgulp live-dev- setup watchers and automatically runs typescript compilation, tslint and tests when you save files
- Rename file
/test/integration/config.sample.tstoconfig.ts. - Update information in
config.tswith appropriate values (urls, credentials). - Run
gulp test-int.
