diff --git a/README.md b/README.md index 1cabef03..ae511425 100644 --- a/README.md +++ b/README.md @@ -204,12 +204,11 @@ console.log(c.driverOptions) const c = new Connection({ kerberosServiceName: 'mongodb', kerberosPrincipal: 'arlo/dog@krb5.mongodb.parts', - kerberosPassword: 'w@@f', ns: 'toys' }); console.log(c.driverUrl) ->>> 'mongodb://arlo%252Fdog%2540krb5.mongodb.parts:w%40%40f@localhost:27017/toys?slaveOk=true&gssapiServiceName=mongodb&authMechanism=GSSAPI' +>>> 'mongodb://arlo%252Fdog%2540krb5.mongodb.parts@localhost:27017/toys?slaveOk=true&gssapiServiceName=mongodb&authMechanism=GSSAPI' console.log(c.driverOptions) >>> { @@ -224,7 +223,6 @@ console.log(c.driverOptions) | ----- | ---- | ---------- | ---- | | `kerberosServiceName` | String | Any program or computer you access over a network | `undefined` | | `kerberosPrincipal` | String | The format of a typical Kerberos V5 principal is `primary/instance@REALM` | `undefined` | -| `kerberosPassword` | String | You can optionally include a password for a kerberos connection | `undefined` | | `kerberosCanonicalizeHostname` | Boolean | Whether canonicalized kerberos hostname | `undefined` | #### See Also diff --git a/constants/auth-strategy-to-field-names.js b/constants/auth-strategy-to-field-names.js index 3d292665..5e1a29a8 100644 --- a/constants/auth-strategy-to-field-names.js +++ b/constants/auth-strategy-to-field-names.js @@ -13,7 +13,6 @@ module.exports = { ], KERBEROS: [ 'kerberosPrincipal', // required - 'kerberosPassword', // optional 'kerberosServiceName', // optional 'kerberosCanonicalizeHostname' ], diff --git a/lib/model.js b/lib/model.js index 18560872..b794e696 100644 --- a/lib/model.js +++ b/lib/model.js @@ -53,7 +53,6 @@ const DRIVER_OPTIONS_DEFAULT = { connectWithNoPrimary: true }; */ const PASSWORD_MAPPINGS = { mongodb_password: 'mongodbPassword', - kerberos_password: 'kerberosPassword', ldap_password: 'ldapPassword', ssl_private_key_password: 'sslPass', ssh_tunnel_password: 'sshTunnelPassword', @@ -221,12 +220,11 @@ assign(props, { * @example * const c = new Connection({ * kerberosServiceName: 'mongodb', - * kerberosPassword: 'w@@f', * kerberosPrincipal: 'arlo/dog@krb5.mongodb.parts', * ns: 'kerberos' * }); * console.log(c.driverUrl) - * >>> mongodb://arlo%252Fdog%2540krb5.mongodb.parts:w%40%40f@localhost:27017/kerberos?slaveOk=true&gssapiServiceName=mongodb&authMechanism=GSSAPI + * >>> mongodb://arlo%252Fdog%2540krb5.mongodb.parts@localhost:27017/kerberos?slaveOk=true&gssapiServiceName=mongodb&authMechanism=GSSAPI * console.log(c.driverOptions) * >>> { db: { readPreference: 'nearest' }, replSet: { connectWithNoPrimary: true } } * @@ -255,14 +253,6 @@ assign(props, { * `mongodb://#{encodeURIComponentRFC3986(this.kerberosPrincipal)}` */ kerberosPrincipal: { type: 'string', default: undefined }, - /** - * You can optionally include a password for a kerberos connection. - * Including a password is useful on windows if you don’t have a - * security domain set up. - * If no password is supplied, it is expected that a valid kerberos - * ticket has already been created for the principal. - */ - kerberosPassword: { type: 'string', default: undefined }, kerberosCanonicalizeHostname: { type: 'boolean', default: false } }); @@ -469,15 +459,9 @@ function addAuthToUrl({ url, isPasswordProtected }) { } else if (this.authStrategy === 'X509' && this.x509Username) { username = encodeURIComponentRFC3986(this.x509Username); authField = username; - } else if (this.authStrategy === 'KERBEROS' && this.kerberosPassword) { - username = encodeURIComponentRFC3986(this.kerberosPrincipal); - password = isPasswordProtected - ? '*****' - : encodeURIComponentRFC3986(this.kerberosPassword); - authField = format('%s:%s', username, password); } else if (this.authStrategy === 'KERBEROS') { username = encodeURIComponentRFC3986(this.kerberosPrincipal); - authField = format('%s:', username); + authField = format('%s', username); } // The auth component comes straight after `the mongodb://` @@ -925,15 +909,6 @@ Connection = AmpersandModel.extend({ ) ); } - if (attrs.kerberosPassword) { - throw new TypeError( - format( - 'The Kerberos \'Password\' field does not apply when ' + - 'using %s for authentication.', - attrs.authStrategy - ) - ); - } } else if (!attrs.kerberosPrincipal) { throw new TypeError( 'The Kerberos \'Principal\' field is required when using \'Kerberos\' for authentication.' @@ -1122,7 +1097,6 @@ async function createConnectionFromUrl(url) { attrs.x509Username = user; } else if (attrs.authStrategy === 'KERBEROS') { attrs.kerberosPrincipal = user; - attrs.kerberosPassword = password; } else if ( attrs.authStrategy === 'MONGODB' || attrs.authStrategy === 'SCRAM-SHA-256' diff --git a/package-lock.json b/package-lock.json index 3ce74d94..e188de59 100644 --- a/package-lock.json +++ b/package-lock.json @@ -769,9 +769,9 @@ "dev": true }, "bl": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz", - "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz", + "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==", "dev": true, "requires": { "readable-stream": "^2.3.5", @@ -785,9 +785,9 @@ "dev": true }, "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "requires": { "core-util-is": "~1.0.0", @@ -847,13 +847,27 @@ "dev": true }, "buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", - "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "dev": true, "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4" + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + }, + "dependencies": { + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true + } } }, "buffer-alloc": { @@ -988,32 +1002,6 @@ "lodash.reduce": "^4.4.0", "lodash.reject": "^4.4.0", "lodash.some": "^4.4.0" - }, - "dependencies": { - "lodash.bind": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-4.2.1.tgz", - "integrity": "sha1-euMBfpOWIqwxt9fX3LGzTbFpDTU=", - "dev": true - }, - "lodash.reduce": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.6.0.tgz", - "integrity": "sha1-8atrg5KZrUj3hKu/R2WW8DuRTTs=", - "dev": true - }, - "lodash.reject": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.reject/-/lodash.reject-4.6.0.tgz", - "integrity": "sha1-gNZJLcFHCGS79YNTO2UfQqn1JBU=", - "dev": true - }, - "lodash.some": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz", - "integrity": "sha1-G7nzFO9ri63tE7VJFpsqlF62jk0=", - "dev": true - } } }, "chokidar": { @@ -1147,13 +1135,10 @@ } }, "commander": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", - "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", - "dev": true, - "requires": { - "graceful-readlink": ">= 1.0.0" - } + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true }, "concat-map": { "version": "0.0.1", @@ -1311,9 +1296,9 @@ "dev": true }, "decompress": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.0.tgz", - "integrity": "sha1-eu3YVCflqS2s/lVnSnxQXpbQH50=", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.1.tgz", + "integrity": "sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==", "dev": true, "requires": { "decompress-tar": "^4.0.0", @@ -1390,15 +1375,6 @@ "yauzl": "^2.4.2" }, "dependencies": { - "fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", - "dev": true, - "requires": { - "pend": "~1.2.0" - } - }, "file-type": { "version": "3.9.0", "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", @@ -1414,16 +1390,6 @@ "object-assign": "^4.0.1", "pinkie-promise": "^2.0.0" } - }, - "yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", - "dev": true, - "requires": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" - } } } }, @@ -2701,9 +2667,9 @@ }, "dependencies": { "type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/type/-/type-2.0.0.tgz", - "integrity": "sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.1.0.tgz", + "integrity": "sha512-G9absDWvhAWCV2gmF1zKud3OyC61nZDwWvBL2DApaVFogI07CprggiQAOOjvp2NRjYWFzPyu7vwtDrQFq8jeSA==", "dev": true } } @@ -3188,12 +3154,6 @@ "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", "dev": true }, - "graceful-readlink": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", - "dev": true - }, "growl": { "version": "1.10.5", "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", @@ -3292,9 +3252,9 @@ }, "dependencies": { "readable-stream": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", - "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "dev": true, "requires": { "inherits": "^2.0.3", @@ -3303,9 +3263,9 @@ } }, "safe-buffer": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", - "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true }, "string_decoder": { @@ -3567,9 +3527,9 @@ "dev": true }, "is-mongodb-running": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-mongodb-running/-/is-mongodb-running-1.0.1.tgz", - "integrity": "sha512-gyUmdhGKLHuDv+JGma70b1P1WLBMy8bvt9QLSEojSSi3/5FbUKuOKCNzHmto9ftMjyLtzlUtfCoSGdkPvx6H5w==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-mongodb-running/-/is-mongodb-running-1.0.2.tgz", + "integrity": "sha512-EslN8MErcBPExb+iK4RnG1n28JGjByA2Rm3YPmdHDGCRd7Hc2uvqshyVMAJXxbDSxRMy8vhxims2oRqQUeGJeA==", "dev": true, "requires": { "chalk": "^2.4.1", @@ -3918,12 +3878,24 @@ "integrity": "sha1-uo31+4QesKPoBEIysOJjqNxqKKI=", "dev": true }, + "lodash.bind": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-4.2.1.tgz", + "integrity": "sha1-euMBfpOWIqwxt9fX3LGzTbFpDTU=", + "dev": true + }, "lodash.defaults": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=", "dev": true }, + "lodash.difference": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", + "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=", + "dev": true + }, "lodash.filter": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/lodash.filter/-/lodash.filter-4.6.0.tgz", @@ -3994,6 +3966,24 @@ "integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=", "dev": true }, + "lodash.reduce": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.6.0.tgz", + "integrity": "sha1-8atrg5KZrUj3hKu/R2WW8DuRTTs=", + "dev": true + }, + "lodash.reject": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.reject/-/lodash.reject-4.6.0.tgz", + "integrity": "sha1-gNZJLcFHCGS79YNTO2UfQqn1JBU=", + "dev": true + }, + "lodash.some": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz", + "integrity": "sha1-G7nzFO9ri63tE7VJFpsqlF62jk0=", + "dev": true + }, "lodash.startswith": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/lodash.startswith/-/lodash.startswith-4.2.1.tgz", @@ -4477,14 +4467,6 @@ "require_optional": "^1.0.1", "safe-buffer": "^5.1.2", "saslprep": "^1.0.0" - }, - "dependencies": { - "bson": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/bson/-/bson-1.1.3.tgz", - "integrity": "sha512-TdiJxMVnodVS7r0BdL42y/pqC9cL2iKynVwA0Ho3qbsQYr428veL3l7BQyuqiw+Q5SqqoT0m4srSY/BlZ9AxXg==", - "dev": true - } } }, "mongodb-dbpath": { @@ -4670,9 +4652,9 @@ } }, "mongodb-runner": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/mongodb-runner/-/mongodb-runner-4.8.0.tgz", - "integrity": "sha512-wFTjkqVCkH9MK05t8kSDVP3oSmFq43AYwDBqVWndpggsO+Jr7sBqgf2VlNKlP5xzWF9rX2gqjESyc1Q3QxsXOw==", + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/mongodb-runner/-/mongodb-runner-4.8.1.tgz", + "integrity": "sha512-1jv7EEyh+ajvGmLwDMXY5BjT/Xqdxgf+AwPK99JHhgeoAISffS3l9Z1c/IIOsSCulMlL7KlR10TyUdzSHZqMhg==", "dev": true, "requires": { "async": "^3.1.0", @@ -4691,31 +4673,6 @@ "which": "^2.0.1" }, "dependencies": { - "async": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/async/-/async-3.1.0.tgz", - "integrity": "sha512-4vx/aaY6j/j3Lw3fbCHNWP0pPaTCew3F6F3hYyl/tHs/ndmV1q7NW9T5yuJ2XAGwdQrP+6Wu20x06U4APo/iQQ==", - "dev": true - }, - "bl": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/bl/-/bl-2.2.1.tgz", - "integrity": "sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g==", - "dev": true, - "requires": { - "readable-stream": "^2.3.5", - "safe-buffer": "^5.1.1" - } - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, "fs-extra": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", @@ -4728,61 +4685,11 @@ } }, "graceful-fs": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", - "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", "dev": true }, - "mongodb": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.6.1.tgz", - "integrity": "sha512-uH76Zzr5wPptnjEKJRQnwTsomtFOU/kQEU8a9hKHr2M7y9qVk7Q4Pkv0EQVp88742z9+RwvsdTw6dRjDZCNu1g==", - "dev": true, - "requires": { - "bl": "^2.2.0", - "bson": "^1.1.4", - "denque": "^1.4.1", - "require_optional": "^1.0.1", - "safe-buffer": "^5.1.2", - "saslprep": "^1.0.0" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -4929,20 +4836,14 @@ } }, "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "requires": { "ms": "^2.1.1" } }, - "lodash.difference": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", - "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=", - "dev": true - }, "untildify": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/untildify/-/untildify-3.0.3.tgz", @@ -6045,12 +5946,12 @@ } }, "seek-bzip": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.5.tgz", - "integrity": "sha1-z+kXyz0nS8/6x5J1ivUxc+sfq9w=", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.6.tgz", + "integrity": "sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==", "dev": true, "requires": { - "commander": "~2.8.1" + "commander": "^2.8.1" } }, "semver": { @@ -6771,9 +6672,9 @@ "dev": true }, "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "requires": { "core-util-is": "~1.0.0", @@ -6979,9 +6880,9 @@ "dev": true }, "unbzip2-stream": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.3.3.tgz", - "integrity": "sha512-fUlAF7U9Ah1Q6EieQ4x4zLNejrRvDWUYmxXUpN3uziFYCHapjWFaCAnreY9bGgxzaMCFAPPpYNng57CypwJVhg==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", "dev": true, "requires": { "buffer": "^5.2.1", diff --git a/package.json b/package.json index 8b97b289..1273301f 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "mongodb": "^3.6.3", "mongodb-connection-fixture": "^0.0.14", "mongodb-js-precommit": "^2.0.0", - "mongodb-runner": "^4.7.2", + "mongodb-runner": "^4.8.1", "proxyquire": "^2.1.0", "sinon": "^9.0.2", "uuid": "^8.2.0" diff --git a/test/build-uri.test.js b/test/build-uri.test.js index e4d7c896..8519a78b 100644 --- a/test/build-uri.test.js +++ b/test/build-uri.test.js @@ -364,12 +364,11 @@ describe('Connection model builder', () => { it('should urlencode credentials when using KERBEROS auth', (done) => { const kerberosPrincipal = 'user@-azMPk]&3Wt)iP_9C:PMQ='; - const kerberosPassword = 'pass@-azMPk]&3Wt)iP_9C:PMQ='; - const c = new Connection({ kerberosPrincipal, kerberosPassword }); + const c = new Connection({ kerberosPrincipal }); expect(c.driverUrl).to.be.equal( [ - 'mongodb://user%40-azMPk%5D%263Wt%29iP_9C%3APMQ%3D:pass%40-azMPk%5D%263Wt%29iP_9C%3APMQ%3D', + 'mongodb://user%40-azMPk%5D%263Wt%29iP_9C%3APMQ%3D', '@localhost:27017/?gssapiServiceName=mongodb&authMechanism=GSSAPI&readPreference=primary&ssl=false&authSource=$external' ].join('') ); @@ -382,16 +381,14 @@ describe('Connection model builder', () => { it('should urlencode credentials when using KERBEROS auth with canonicalizing the host name', (done) => { const kerberosPrincipal = 'user@-azMPk]&3Wt)iP_9C:PMQ='; - const kerberosPassword = 'pass@-azMPk]&3Wt)iP_9C:PMQ='; const c = new Connection({ kerberosCanonicalizeHostname: true, kerberosPrincipal, - kerberosPassword }); expect(c.driverUrl).to.be.equal( [ - 'mongodb://user%40-azMPk%5D%263Wt%29iP_9C%3APMQ%3D:pass%40-azMPk%5D%263Wt%29iP_9C%3APMQ%3D', + 'mongodb://user%40-azMPk%5D%263Wt%29iP_9C%3APMQ%3D', '@localhost:27017/?gssapiServiceName=mongodb&authMechanism=GSSAPI&readPreference=primary&ssl=false&authSource=$external&authMechanismProperties=CANONICALIZE_HOST_NAME:true' ].join('') ); @@ -790,7 +787,7 @@ describe('Connection model builder', () => { }); expect(c.driverUrl).to.be.equal( - 'mongodb://lucas%40kerb.mongodb.parts:@localhost:27017/?gssapiServiceName=mongodb&authMechanism=GSSAPI&readPreference=primary&ssl=false&authSource=$external' + 'mongodb://lucas%40kerb.mongodb.parts@localhost:27017/?gssapiServiceName=mongodb&authMechanism=GSSAPI&readPreference=primary&ssl=false&authSource=$external' ); Connection.from(c.driverUrl, (error) => { @@ -835,15 +832,14 @@ describe('Connection model builder', () => { const attrs = { kerberosPrincipal: 'alena@test.test', ldapPassword: 'ldap-password', - kerberosPassword: 'kerberosP@ssword' }; const c = new Connection(attrs); expect(c.driverUrl).to.be.equal( - 'mongodb://alena%40test.test:kerberosP%40ssword@localhost:27017/?gssapiServiceName=mongodb&authMechanism=GSSAPI&readPreference=primary&ssl=false&authSource=$external' + 'mongodb://alena%40test.test@localhost:27017/?gssapiServiceName=mongodb&authMechanism=GSSAPI&readPreference=primary&ssl=false&authSource=$external' ); expect(c.safeUrl).to.be.equal( - 'mongodb://alena%40test.test:*****@localhost:27017/?gssapiServiceName=mongodb&authMechanism=GSSAPI&readPreference=primary&ssl=false&authSource=$external' + 'mongodb://alena%40test.test@localhost:27017/?gssapiServiceName=mongodb&authMechanism=GSSAPI&readPreference=primary&ssl=false&authSource=$external' ); Connection.from(c.driverUrl, (error) => { @@ -855,7 +851,6 @@ describe('Connection model builder', () => { it('should set driverAuthMechanism to GSSAPI when a password is provided', (done) => { const c = new Connection({ kerberosPrincipal: 'arlo/dog@krb5.mongodb.parts', - kerberosPassword: 'w@@f', kerberosServiceName: 'mongodb' }); @@ -870,14 +865,12 @@ describe('Connection model builder', () => { it('should set driverAuthMechanism to GSSAPI when a password is provided and urlencode the principal', (done) => { const c = new Connection({ kerberosPrincipal: 'arlo/dog@krb5.mongodb.parts', - kerberosPassword: 'w@@f', kerberosServiceName: 'mongodb' }); const kerberosPrincipal = encodeURIComponentRFC3986( c.kerberosPrincipal ); - const kerberosPassword = encodeURIComponentRFC3986(c.kerberosPassword); - const expectedPrefix = `mongodb://${kerberosPrincipal}:${kerberosPassword}@localhost:27017`; + const expectedPrefix = `mongodb://${kerberosPrincipal}@localhost:27017`; expect(c.driverAuthMechanism).to.be.equal('GSSAPI'); expect(c.driverUrl.indexOf(expectedPrefix)).to.be.equal(0); @@ -901,14 +894,14 @@ describe('Connection model builder', () => { }); }); - it('should include the `:` auth seperator when no password is provided', (done) => { + it('should not include the `:` auth seperator', (done) => { const c = new Connection({ kerberosPrincipal: 'lucas@kerb.mongodb.parts' }); const kerberosPrincipal = encodeURIComponentRFC3986( c.kerberosPrincipal ); - const expectedPrefix = `mongodb://${kerberosPrincipal}:@localhost:27017`; + const expectedPrefix = `mongodb://${kerberosPrincipal}@localhost:27017`; expect(c.driverUrl.indexOf(expectedPrefix)).to.be.equal(0); diff --git a/test/model.test.js b/test/model.test.js index c26a58d5..c9c13c2e 100644 --- a/test/model.test.js +++ b/test/model.test.js @@ -113,13 +113,6 @@ describe('Connection', () => { ); }); - it('maps kerberos_password', () => { - assert.strictEqual( - new Connection({ kerberos_password: 'test' }).kerberosPassword, - 'test' - ); - }); - it('maps ldap_password', () => { assert.strictEqual( new Connection({ ldap_password: 'test' }).ldapPassword, @@ -157,14 +150,6 @@ describe('Connection', () => { undefined ); }); - - it('does not map kerberos_password', () => { - assert.strictEqual( - new Connection({ kerberos_password: '' }).kerberosPassword, - undefined - ); - }); - it('does not map ldap_password', () => { assert.strictEqual( new Connection({ ldap_password: '' }).ldapPassword, @@ -203,16 +188,6 @@ describe('Connection', () => { ); }); - it('does not map kerberos_password', () => { - assert.strictEqual( - new Connection({ - kerberos_password: 'test', - kerberosPassword: 'pw' - }).kerberosPassword, - 'pw' - ); - }); - it('does not map ldap_password', () => { assert.strictEqual( new Connection({ ldap_password: 'test', ldapPassword: 'pw' }) @@ -248,6 +223,15 @@ describe('Connection', () => { 'pw' ); }); + + it('does not map kerberosPassword', () => { + assert.strictEqual( + new Connection({ + kerberosPassword: 'pw' + }).kerberosPassword, + undefined + ); + }); }); }); }); diff --git a/test/parse-and-build-uri.js b/test/parse-and-build-uri.js index 530653fa..d818006e 100644 --- a/test/parse-and-build-uri.js +++ b/test/parse-and-build-uri.js @@ -92,10 +92,21 @@ const tests = [ 'mongodb://%40rlo:w%40of@localhost:27017/dogdb?authSource=catdb&' + 'authMechanism=SCRAM-SHA-256&readPreference=primary&ssl=false' }, + { + description: 'with password which is ignored for GSSAPI', + connectionString: + 'mongodb://%40rlo:woof@localhost:27017/?' + + 'gssapiServiceName=mongodb&authMechanism=GSSAPI&readPreference=primary&' + + 'authSource=%24external&ssl=false&authSource=$external', + expectedConnectionString: + 'mongodb://%40rlo@localhost:27017/?' + + 'gssapiServiceName=mongodb&authMechanism=GSSAPI&readPreference=primary&' + + 'authSource=%24external&ssl=false&authSource=$external' + }, { description: 'with authMechanismProperties and gssapiServiceName', connectionString: - 'mongodb://%40rlo:w%40of@localhost:27017/?' + + 'mongodb://%40rlo@localhost:27017/?' + 'gssapiServiceName=mongodb&authMechanism=GSSAPI&readPreference=primary&' + 'authSource=%24external&authMechanismProperties=CANONICALIZE_HOST_NAME%3Atrue&' + 'gssapiCanonicalizeHostName=true&ssl=false&authSource=$external' @@ -140,7 +151,7 @@ describe('connection model', () => { const c = new Connection(result.toJSON()); - expect(c.driverUrl).to.be.equal(test.connectionString); + expect(c.driverUrl).to.be.equal(test.expectedConnectionString || test.connectionString); done(); }); const runMode = test.only ? it.only : it; diff --git a/test/parse-uri-common-targets.test.js b/test/parse-uri-common-targets.test.js index b1e1016c..a6705c49 100644 --- a/test/parse-uri-common-targets.test.js +++ b/test/parse-uri-common-targets.test.js @@ -258,7 +258,6 @@ describe('connection model parser should parse URI strings for common connection expect(result.kerberosPrincipal).to.be.equal( 'arlo/dog@krb5.mongodb.parts' ); - expect(result.kerberosPassword).to.be.equal('w@@f'); expect(result.ns).to.be.equal('kerberos'); done(); }