Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 46 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,12 @@ Create SAML assertions. Supports SAML 1.1 and SAML 2.0 tokens.

### Usage

#### Signed Assertions

```js
var saml = require('saml').Saml20; // or Saml11
const saml = require('saml').Saml20; // or Saml11

var options = {
const options = {
cert: fs.readFileSync(__dirname + '/test-auth0.pem'),
key: fs.readFileSync(__dirname + '/test-auth0.key'),
issuer: 'urn:issuer',
Expand All @@ -23,10 +25,50 @@ var options = {
sessionIndex: '_faed468a-15a0-4668-aed6-3d9c478cc8fa'
};

var signedAssertion = saml.create(options);
let samlAssertion = saml.create(options)

// OR with callbacks

saml.create(options, (err, samlAssertion) => {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Synchronous invocation is actually supported unless the encryptionCert option has been passed in, at which point callback becomes required. It's a bit silly but that's how the library has behaved.

node-saml/lib/saml20.js

Lines 261 to 263 in 06acc02

if (strategies.encryptXml === EncryptXml.unencrypted) {
return strategies.encryptXml(signed, callback);
}

I'm ok with the change though.

if (err) { throw new Error(err) }
console.log(samlAssertion)
})
```

All options except of the cert and key are optional. The function can be invoked
either synchronously or with callbacks, however if the `encryptionCert` option
has been passed in, the syncronous invocation is not possible

#### Unsigned Assertions

```js
const saml = require('saml').Saml20; // or Saml11

const options = {
issuer: 'urn:issuer',
lifetimeInSeconds: 600,
audiences: 'urn:myapp',
attributes: {
'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress': '[email protected]',
'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name': 'Foo Bar'
},
nameIdentifier: 'foo',
sessionIndex: '_faed468a-15a0-4668-aed6-3d9c478cc8fa'
};

let samlAssertion = saml.createUnsignedAssertion(options)

// OR with callbacks

saml.createUnsignedAssertion(options, (err, samlAssertion) => {
if (err) { throw new Error(err) }
console.log(samlAssertion)
})
```

Everything except the cert and key is optional.
All options are optional. The function can be invoked
either synchronously or with callbacks, however if the `encryptionCert` option
has been passed in, the syncronous invocation is not possible

## Issue Reporting

Expand Down