Db.prototype.authenticate method will no longer be available

After upgrading our node MongoDB driver from 2.x to a 3.x driver I saw,

Db.prototype.authenticate method will no longer be available in the next major 
release 3.x as MongoDB 3.6 will only allow auth against users in the admin db
and will no longer allow multiple credentials on a socket. Please authenticate 
using MongoClient.connect with auth credentials.

The socket portion of the message concerns me. Our use case has many users with varying
collection authorizations.The users are managed in the ‘admin’ database.
We have a ‘qa’ database with collections. Joe can see AA, and BB. Sally can see AA, XX, and YY.
At node start up time we connect to mongo and set up our MongoClient.

This pseudo code sequence properly returns data,

db = client.db('admin');
client.authenticate("Joe", "please");
db = client.db('qa');
list = db.AA.find();

This code sequence properly returns data,

db = client.db('admin');
client.authenticate("Sally", "openSesame");
db = client.db('qa');
list = db.AA.find();

This code sequence properly returns an error,

db = client.db('admin');
client.authenticate("Sally", "openSesame");
db = client.db('qa');
list = db.BB.find();

For background details, sample user and role setup are described below.

start mongod with the --auth flag
use admin
db.dropUser("joe_s");
db.dropUser("sally_s");
db.createUser( {user: "joe_s", pwd: "please", roles: [ ] } );
db.createUser( {user: "sally_s", pwd: "openSesame", roles: [ ] } );
db.dropRole("foo_access");
db.createRole( {
  role: "foo_access",
  privileges: [
     { resource: {db: "qa", collection: "foo"}, actions: ["find"] }
    ],
  roles:[   ]
 }
);
db.dropRole("bar_access");
db.createRole( {
  role: "bar_access",
  privileges: [
     { resource: {db: "qa", collection: "bar"}, actions: ["find"] }
    ],
  roles:[   ]
 }
);
db.grantRolesToUser("joe_s", ["foo_access", "bar_access"] );
db.grantRolesToUser("sally_s", ["foo_access"] );
use qa
db.foo.insert( {name: 'test'} );
db.bar.insert( {name: 'test'} );

Sample Mongo shell interaction

use admin
db.auth("joe_s", "please");
use qa
db.foo.find();

use admin
db.auth("sally_s", "openSesame");
use qa
db.foo.find();

db.bar.find();
Properly returns "Unauthorized" error

I have a node.js example that exercises this scenario.
How are such enterprise user considerations to be handled?

Thank you.

You can connect as a user using the mongodb connection string

mongodb://username:password@localhost:20717/<database to authenticate against>

Since mongoDB authentication is based on the datbase the user is created in you can specify it. If it’s not specified then it will authenticate against the admin DB.

You can read more about it here:
https://docs.mongodb.com/manual/reference/connection-string/

To Add:
As you have read that monoDB will no longer allow you to switch authentication. A new connection will have to be created.