@@ -51,12 +51,21 @@ class MongoDBAWS extends AuthProvider {
5151 return ;
5252 }
5353
54- const username = credentials . username ;
55- const password = credentials . password ;
5654 const db = credentials . source ;
57- const token = credentials . mechanismProperties . AWS_SESSION_TOKEN ;
5855 const bson = this . bson ;
5956
57+ const accessKeyId = credentials . username ;
58+ const secretAccessKey = credentials . password ;
59+ const sessionToken = credentials . mechanismProperties . AWS_SESSION_TOKEN ;
60+
61+ // If all three defined, include sessionToken, else include username and pass, else no credentials
62+ const awsCredentials =
63+ accessKeyId && secretAccessKey && sessionToken
64+ ? { accessKeyId, secretAccessKey, sessionToken }
65+ : accessKeyId && secretAccessKey
66+ ? { accessKeyId, secretAccessKey }
67+ : undefined ;
68+
6069 crypto . randomBytes ( 32 , ( err , nonce ) => {
6170 if ( err ) {
6271 callback ( err ) ;
@@ -109,18 +118,14 @@ class MongoDBAWS extends AuthProvider {
109118 path : '/' ,
110119 body
111120 } ,
112- {
113- accessKeyId : username ,
114- secretAccessKey : password ,
115- token
116- }
121+ awsCredentials
117122 ) ;
118123
119124 const authorization = options . headers . Authorization ;
120125 const date = options . headers [ 'X-Amz-Date' ] ;
121126 const payload = { a : authorization , d : date } ;
122- if ( token ) {
123- payload . t = token ;
127+ if ( sessionToken ) {
128+ payload . t = sessionToken ;
124129 }
125130
126131 const saslContinue = {
@@ -164,6 +169,7 @@ function makeTempCredentials(credentials, callback) {
164169 if ( process . env . AWS_CONTAINER_CREDENTIALS_RELATIVE_URI ) {
165170 request (
166171 `${ AWS_RELATIVE_URI } ${ process . env . AWS_CONTAINER_CREDENTIALS_RELATIVE_URI } ` ,
172+ undefined ,
167173 ( err , res ) => {
168174 if ( err ) return callback ( err ) ;
169175 done ( res ) ;
@@ -215,11 +221,6 @@ function deriveRegion(host) {
215221}
216222
217223function request ( uri , options , callback ) {
218- if ( typeof options === 'function' ) {
219- callback = options ;
220- options = { } ;
221- }
222-
223224 options = Object . assign (
224225 {
225226 method : 'GET' ,
0 commit comments