Project forked from: https://github.com/s-KaiNet/node-sp-auth
npm install @lucaselb/node-sp-auth --save-dev
import * as spauth from '@lucaselb/node-sp-auth';
import * as request from 'request-promise';
//get auth options
spauth.getAuth(url, credentialOptions)
.then(options => {
//perform request with any http-enabled library (request-promise in a sample below):
let headers = options.headers;
headers['Accept'] = 'application/json;odata=verbose';
request.get({
url: 'https://[your tenant].sharepoint.com/sites/dev/_api/web',
headers: headers
}).then(response => {
//process data
});
});
Promise resolving into object with following properties:
-
headers
- http headers (normally containAuthorization
header, 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 setagent
property on corresponding http client
-
url
- required, string, url to SharePoint site,https://sp2013/sites/dev/
orhttps:/[your tenant].sharepoint.com/sites/dev/
-
credentialOptions
- optional, object in a form of key-value. Each authentication option requires predefined credential object, depending on authentication type. Based on credentials provided,node-sp-auth
automatically 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 - User credentials for Forefront TMG (reverse proxy):
username
,password
,tmg
= true
-
Addin only permissions:
-
SharePoint Online:
-
Addin only permissions:
clientId
,clientSecret
-
SAML based with user credentials
username
,password
,online
-
Addin only permissions:
-
ADFS user credentials:
username
,password
,relyingParty
,adfsUrl
,adfsCookie
-
On demand authentication
ondemand
= true,electron
,force
,persist
,ttl
-
no authentication - do not provide any authentication data at all, like
spauth.getAuth(url).then(...)
. In that casenode-sp-auth
will ask you for the site url and credentials. You will have to select any of the credential options listed above. Credentials will be stored in a user folder in an encrypted manner.
Credits: Andrew Koltyakov @koltyakov and his awesome node-sp-auth-config
Please, use Wiki to see how you can configure your environment in order to use any of this authentication options.
-
configuration
- object accepting some configuration values for node-sp-auth. Currently it supports only configuration of underlinerequest
module via providing below code (for options available consider request repository):
spauth.setup({
requestOptions: {... request options object}
});