This commit is contained in:
Steffo Weber 2018-02-12 23:02:21 +01:00
parent 9f9c9a0a03
commit e27099cc1c
4 changed files with 76 additions and 56 deletions

View file

@ -1,29 +1,30 @@
{
"lockfileVersion": 1,
"dependencies": {
"async": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/async/-/async-2.3.0.tgz",
"from": "async@2.3.0"
"integrity": "sha1-EBPRBRBH3TIP4k5JTVxm7K9hR9k="
},
"body-parser": {
"version": "1.17.1",
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.17.1.tgz",
"from": "body-parser@1.17.1",
"integrity": "sha1-dbO8mN3W5+DY/+dQ36ylxmmT+kc=",
"dependencies": {
"bytes": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz",
"from": "bytes@2.4.0"
"integrity": "sha1-fZcZb51br39pNeJZhVSe3SpsIzk="
},
"debug": {
"version": "2.6.1",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.1.tgz",
"from": "debug@2.6.1",
"integrity": "sha1-eYVQkLosTjEVzH2HaUkdWPBJE1E=",
"dependencies": {
"ms": {
"version": "0.7.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz",
"from": "ms@0.7.2"
"integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U="
}
}
}
@ -32,234 +33,234 @@
"bytes": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/bytes/-/bytes-2.5.0.tgz",
"from": "bytes@2.5.0"
"integrity": "sha1-TJQj6i0lLCcMQbK97+/5u2tiwGo="
},
"connect": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/connect/-/connect-3.6.0.tgz",
"from": "connect@3.6.0",
"integrity": "sha1-8JpPfc0XMktmO3JcgVvbHEFYpG4=",
"dependencies": {
"debug": {
"version": "2.6.1",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.1.tgz",
"from": "debug@2.6.1"
"integrity": "sha1-eYVQkLosTjEVzH2HaUkdWPBJE1E="
},
"ms": {
"version": "0.7.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz",
"from": "ms@0.7.2"
"integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U="
}
}
},
"content-type": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz",
"from": "content-type@1.0.2"
"integrity": "sha1-t9ETrueo3Se9IRM8TcJSnfFyHu0="
},
"debug": {
"version": "2.6.3",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.3.tgz",
"from": "debug@2.6.3",
"integrity": "sha1-D364wwll7AjHKsz6ATDIt5mEFB0=",
"dependencies": {
"ms": {
"version": "0.7.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz",
"from": "ms@0.7.2"
"integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U="
}
}
},
"depd": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz",
"from": "depd@1.1.0"
"integrity": "sha1-4b2Cxqq2ztlluXuIsX7T5SjKGMM="
},
"ee-first": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
"from": "ee-first@1.1.1"
"integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
},
"ejs": {
"version": "2.5.6",
"resolved": "https://registry.npmjs.org/ejs/-/ejs-2.5.6.tgz",
"from": "ejs@2.5.6"
"integrity": "sha1-R5Y2v6P+Ox3r1SCH8KyyBLTxnIg="
},
"encodeurl": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz",
"from": "encodeurl@>=1.0.1 <1.1.0"
"integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA="
},
"escape-html": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
"from": "escape-html@>=1.0.3 <1.1.0"
"integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
},
"finalhandler": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.0.tgz",
"from": "finalhandler@1.0.0",
"integrity": "sha1-tWkcLAkSCS8YrCPpQWveXNfcZ1U=",
"dependencies": {
"debug": {
"version": "2.6.1",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.1.tgz",
"from": "debug@2.6.1"
"integrity": "sha1-eYVQkLosTjEVzH2HaUkdWPBJE1E="
},
"ms": {
"version": "0.7.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz",
"from": "ms@0.7.2"
"integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U="
}
}
},
"http-errors": {
"version": "1.6.1",
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.1.tgz",
"from": "http-errors@1.6.1"
"integrity": "sha1-X4uO2YrKVFZWv1cplzh/kEpyIlc="
},
"iconv-lite": {
"version": "0.4.15",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.15.tgz",
"from": "iconv-lite@0.4.15"
"integrity": "sha1-/iZaIYrGpXz+hUkn6dBMGYJe3es="
},
"inherits": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
"from": "inherits@2.0.3"
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
},
"lodash": {
"version": "4.17.4",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz",
"from": "lodash@4.17.4"
"integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4="
},
"media-typer": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
"from": "media-typer@0.3.0"
"integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
},
"mime-db": {
"version": "1.27.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz",
"from": "mime-db@>=1.27.0 <1.28.0"
"integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE="
},
"mime-types": {
"version": "2.1.15",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz",
"from": "mime-types@2.1.15"
"integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0="
},
"ms": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-1.0.0.tgz",
"from": "ms@1.0.0"
"integrity": "sha1-Wa3NIu3FQ/e1OBhi0xOHsfS8lHM="
},
"node-forge": {
"version": "0.7.1",
"resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.1.tgz",
"from": "node-forge@0.7.1"
"integrity": "sha1-naYR6giYL0uUIGs760zJZl8gwwA="
},
"on-finished": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
"from": "on-finished@2.3.0"
"integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc="
},
"parseurl": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz",
"from": "parseurl@>=1.3.1 <1.4.0"
"integrity": "sha1-yKuMkiO6NIiKpkopeyiFO+wY2lY="
},
"qs": {
"version": "6.4.0",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz",
"from": "qs@6.4.0"
"integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM="
},
"querystring": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
"from": "querystring@0.2.0"
"integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA="
},
"raw-body": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.2.0.tgz",
"from": "raw-body@2.2.0",
"integrity": "sha1-mUl2z2pQlqQRYoQEkvC9xdbn+5Y=",
"dependencies": {
"bytes": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz",
"from": "bytes@2.4.0"
"integrity": "sha1-fZcZb51br39pNeJZhVSe3SpsIzk="
}
}
},
"sax": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/sax/-/sax-1.2.2.tgz",
"from": "sax@1.2.2"
"integrity": "sha1-/YYxojvHgmvvXYcb24c3jJVkeCg="
},
"setprototypeof": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz",
"from": "setprototypeof@1.0.3"
"integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ="
},
"statuses": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz",
"from": "statuses@1.3.1"
"integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4="
},
"type-is": {
"version": "1.6.15",
"resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz",
"from": "type-is@1.6.15"
"integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA="
},
"unpipe": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
"from": "unpipe@1.0.0"
"integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
},
"utils-merge": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz",
"from": "utils-merge@1.0.0"
"integrity": "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg="
},
"xml-crypto": {
"version": "0.9.0",
"resolved": "https://registry.npmjs.org/xml-crypto/-/xml-crypto-0.9.0.tgz",
"from": "xml-crypto@0.9.0",
"integrity": "sha1-IBBorkYOZ8LUprb1rTBW04B2t00=",
"dependencies": {
"xmldom": {
"version": "0.1.19",
"resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.19.tgz",
"from": "xmldom@0.1.19"
"integrity": "sha1-Yx/Ad3bv2EEYvyUXGzftTQdaCrw="
}
}
},
"xml2js": {
"version": "0.4.17",
"resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.17.tgz",
"from": "xml2js@0.4.17",
"integrity": "sha1-F76T6q4/O3eTWceVtBlwWogX6Gg=",
"dependencies": {
"xmlbuilder": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-4.2.1.tgz",
"from": "xmlbuilder@>=4.1.0 <5.0.0"
"integrity": "sha1-qlijBBoGb5DqoWwvU4n/GfP0YaU="
}
}
},
"xmlbuilder": {
"version": "9.0.0",
"resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.0.tgz",
"from": "xmlbuilder@9.0.0"
"integrity": "sha1-qTEbP4UJNFcAxJqPeb4GvMWYjRg="
},
"xmldom": {
"version": "0.1.27",
"resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz",
"from": "xmldom@0.1.27"
"integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk="
},
"xpath": {
"version": "0.0.24",
"resolved": "https://registry.npmjs.org/xpath/-/xpath-0.0.24.tgz",
"from": "xpath@0.0.24"
"integrity": "sha1-Gt4WLhzFI8jTn8fQavwW6iFvKfs="
},
"xpath.js": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/xpath.js/-/xpath.js-1.0.7.tgz",
"from": "xpath.js@1.0.7"
"integrity": "sha1-fpRif1QSdsvGprArXTXpQYVls+Q="
}
}
}

View file

@ -1,7 +1,7 @@
Package.describe({
name:"steffo:meteor-accounts-saml",
summary: "SAML Login (SP) for Meteor. Works with OpenAM, OpenIDP and provides Single Logout.",
version: "0.0.13",
version: "0.0.14",
git: "https://github.com/steffow/meteor-accounts-saml.git"
});

View file

@ -108,7 +108,8 @@ Accounts.registerLoginHandler(function(loginRequest) {
if (!user) {
if (Meteor.settings.saml[0].dynamicProfile) {
if (Meteor.settings.debug) {
console.log("User not found. Will dynamically create one with '" + Meteor.settings.saml[0].localProfileMatchAttribute + "' = " + loginResult.profile[Meteor.settings.saml[0].localProfileMatchAttribute])
console.log("User not found. Will dynamically create one with '" + Meteor.settings.saml[0].localProfileMatchAttribute + "' = " + loginResult.profile[Meteor.settings.saml[0].localProfileMatchAttribute]);
console.log("Identity handle: " + profileOrEmail + " = " + JSON.stringify(profileOrEmailValue));
}
Accounts.createUser({
//email: loginResult.profile.email,

View file

@ -408,14 +408,28 @@ SAML.prototype.validateResponse = function(samlResponse, relayState, callback) {
const attributeStatement = assertion.getElementsByTagNameNS('urn:oasis:names:tc:SAML:2.0:assertion', 'AttributeStatement')[0];
if (attributeStatement) {
const attributes = attributeStatement.getElementsByTagNameNS('urn:oasis:names:tc:SAML:2.0:assertion', 'Attribute')[0];
if (Meteor.settings.debug) {
console.log("Attribute Statement found in SAML response: " + attributeStatement);
}
const attributes = attributeStatement.getElementsByTagNameNS('urn:oasis:names:tc:SAML:2.0:assertion', 'Attribute');
if (Meteor.settings.debug) {
console.log("Attributes will be processed: " + attributes.length);
}
if (attributes) {
for (let i = 0; i < attributes.length; i++) {
const value = attributes[i].getElementsByTagNameNS('urn:oasis:names:tc:SAML:2.0:assertion', 'AttributeValue')[0];
profile[attributes[i].getAttribute('Name')] = value[0].textContent;
if (Meteor.settings.debug) {
console.log("Name: " + attributes[i]);
console.log(`Adding attrinute from SAML response to profile:` + attributes[i].getAttribute('Name') + " = " + value.textContent);
}
profile[attributes[i].getAttribute('Name')] = value.textContent;
}
}
} else {
if (Meteor.settings.debug) {
console.log("No Attributes found in SAML attribute statement.");
}
}
if (!profile.mail && profile['urn:oid:0.9.2342.19200300.100.1.3']) {
// See http://www.incommonfederation.org/attributesummary.html for definition of attribute OIDs
@ -425,7 +439,11 @@ SAML.prototype.validateResponse = function(samlResponse, relayState, callback) {
if (!profile.email && profile.mail) {
profile.email = profile.mail;
}
}
} else {
if (Meteor.settings.debug) {
console.log("No Attribute Statement found in SAML response.");
}
}
if (!profile.email && profile.nameID && profile.nameIDFormat && profile.nameIDFormat.indexOf('emailAddress') >= 0) {
profile.email = profile.nameID;