docs: function Strategy(options, verify) {
    if (typeof options == 'function') {
      verify = options;
      options = {};
    }
    if (!verify) throw new Error('windows authentication strategy requires a verify function');
  
    if(!options.integrated && (!options.ldap || (!options.ldap.url && !options.ldap.binder))) {
      throw new Error('ldap url should be provided in order to validate user and passwords');
    }
  
    passport.Strategy.call(this);
  
    this.name = 'WindowsAuthentication';
    this._verify = verify;
  
    this._passReqToCallback = options.passReqToCallback;
  
    this._integrated = typeof options.integrated !== 'undefined' ?
                            options.integrated :
                            true;
  
    if (!this._integrated) {
      this._usernameField = options.usernameField || 'username';
      this._passwordField = options.passwordField || 'password';
    }
  
    this._getUserNameFromHeader = options.getUserNameFromHeader || function (req) {
      if (!req.headers['x-iisnode-logon_user']) return null;
      return req.headers['x-iisnode-logon_user'].split('\\')[1];
    };
  
    if (options.ldap) {
      if (this._integrated) {
        this._ldapLookup = new LdapLookup(options.ldap);
      } else {
        this._ldapValidator = new LdapValidator(options.ldap);
      }
    }
  }