diff --git a/src/externalldap.js b/src/externalldap.js index 52bf17c23..ffc1f221a 100644 --- a/src/externalldap.js +++ b/src/externalldap.js @@ -64,9 +64,16 @@ function getClient(externalLdapConfig, callback) { try { ldap.parseDN(externalLdapConfig.baseDn); } catch (e) { return callback(new BoxError(BoxError.BAD_FIELD, 'invalid baseDn')); } try { ldap.parseFilter(externalLdapConfig.filter); } catch (e) { return callback(new BoxError(BoxError.BAD_FIELD, 'invalid filter')); } + var config = { + url: externalLdapConfig.url, + tlsOptions: { + rejectUnauthorized: externalLdapConfig.acceptSelfSignedCerts ? false : true + } + }; + var client; try { - client = ldap.createClient({ url: externalLdapConfig.url }); + client = ldap.createClient(config); } catch (e) { if (e instanceof ldap.ProtocolError) return callback(new BoxError(BoxError.BAD_FIELD, 'url protocol is invalid')); return callback(new BoxError(BoxError.INTERNAL_ERROR, e)); @@ -220,6 +227,7 @@ function testConfig(config, callback) { try { ldap.parseFilter(config.filter); } catch (e) { return callback(new BoxError(BoxError.BAD_FIELD, 'invalid filter')); } if ('syncGroups' in config && typeof config.syncGroups !== 'boolean') return callback(new BoxError(BoxError.BAD_FIELD, 'syncGroups must be a boolean')); + if ('acceptSelfSignedCerts' in config && typeof config.acceptSelfSignedCerts !== 'boolean') return callback(new BoxError(BoxError.BAD_FIELD, 'acceptSelfSignedCerts must be a boolean')); if (config.syncGroups) { if (!config.groupBaseDn) return callback(new BoxError(BoxError.BAD_FIELD, 'groupBaseDn must not be empty'));