@@ -192,8 +192,11 @@ export class NativeBrokerPlugin implements INativeBrokerPlugin {
192
192
"NativeBrokerPlugin - acquireTokenSilent called" ,
193
193
request . correlationId
194
194
) ;
195
- const authParams = this . generateRequestParameters ( request ) ;
196
- const account = await this . getAccount ( request ) ;
195
+ const platformRequest = request ;
196
+ const authParams = this . generateRequestParameters ( platformRequest ) ;
197
+ const account = await this . getAccount ( platformRequest ) ;
198
+ platformRequest . redirectUri =
199
+ this . chooseRedirectUriByPlatform ( platformRequest ) ;
197
200
198
201
return new Promise (
199
202
( resolve : ( value : AuthenticationResult ) => void , reject ) => {
@@ -208,7 +211,7 @@ export class NativeBrokerPlugin implements INativeBrokerPlugin {
208
211
}
209
212
}
210
213
const authenticationResult = this . getAuthenticationResult (
211
- request ,
214
+ platformRequest ,
212
215
result
213
216
) ;
214
217
resolve ( authenticationResult ) ;
@@ -218,14 +221,14 @@ export class NativeBrokerPlugin implements INativeBrokerPlugin {
218
221
if ( account ) {
219
222
msalNodeRuntime . AcquireTokenSilentlyAsync (
220
223
authParams ,
221
- request . correlationId ,
224
+ platformRequest . correlationId ,
222
225
account ,
223
226
resultCallback
224
227
) ;
225
228
} else {
226
229
msalNodeRuntime . SignInSilentlyAsync (
227
230
authParams ,
228
- request . correlationId ,
231
+ platformRequest . correlationId ,
229
232
resultCallback
230
233
) ;
231
234
}
@@ -247,8 +250,11 @@ export class NativeBrokerPlugin implements INativeBrokerPlugin {
247
250
"NativeBrokerPlugin - acquireTokenInteractive called" ,
248
251
request . correlationId
249
252
) ;
250
- const authParams = this . generateRequestParameters ( request ) ;
251
- const account = await this . getAccount ( request ) ;
253
+ const platformRequest = request ;
254
+ const authParams = this . generateRequestParameters ( platformRequest ) ;
255
+ platformRequest . redirectUri =
256
+ this . chooseRedirectUriByPlatform ( platformRequest ) ;
257
+ const account = await this . getAccount ( platformRequest ) ;
252
258
const windowHandle = providedWindowHandle || Buffer . from ( [ 0 ] ) ;
253
259
254
260
return new Promise (
@@ -264,27 +270,28 @@ export class NativeBrokerPlugin implements INativeBrokerPlugin {
264
270
}
265
271
}
266
272
const authenticationResult = this . getAuthenticationResult (
267
- request ,
273
+ platformRequest ,
268
274
result
269
275
) ;
270
276
resolve ( authenticationResult ) ;
271
277
} ;
272
278
273
279
try {
274
- switch ( request . prompt ) {
280
+ switch ( platformRequest . prompt ) {
275
281
case PromptValue . LOGIN :
276
282
case PromptValue . SELECT_ACCOUNT :
277
283
case PromptValue . CREATE :
278
284
this . logger . info (
279
285
"Calling native interop SignInInteractively API" ,
280
- request . correlationId
286
+ platformRequest . correlationId
281
287
) ;
282
288
const loginHint =
283
- request . loginHint || Constants . EMPTY_STRING ;
289
+ platformRequest . loginHint ||
290
+ Constants . EMPTY_STRING ;
284
291
msalNodeRuntime . SignInInteractivelyAsync (
285
292
windowHandle ,
286
293
authParams ,
287
- request . correlationId ,
294
+ platformRequest . correlationId ,
288
295
loginHint ,
289
296
resultCallback
290
297
) ;
@@ -293,22 +300,22 @@ export class NativeBrokerPlugin implements INativeBrokerPlugin {
293
300
if ( account ) {
294
301
this . logger . info (
295
302
"Calling native interop AcquireTokenSilently API" ,
296
- request . correlationId
303
+ platformRequest . correlationId
297
304
) ;
298
305
msalNodeRuntime . AcquireTokenSilentlyAsync (
299
306
authParams ,
300
- request . correlationId ,
307
+ platformRequest . correlationId ,
301
308
account ,
302
309
resultCallback
303
310
) ;
304
311
} else {
305
312
this . logger . info (
306
313
"Calling native interop SignInSilently API" ,
307
- request . correlationId
314
+ platformRequest . correlationId
308
315
) ;
309
316
msalNodeRuntime . SignInSilentlyAsync (
310
317
authParams ,
311
- request . correlationId ,
318
+ platformRequest . correlationId ,
312
319
resultCallback
313
320
) ;
314
321
}
@@ -317,26 +324,27 @@ export class NativeBrokerPlugin implements INativeBrokerPlugin {
317
324
if ( account ) {
318
325
this . logger . info (
319
326
"Calling native interop AcquireTokenInteractively API" ,
320
- request . correlationId
327
+ platformRequest . correlationId
321
328
) ;
322
329
msalNodeRuntime . AcquireTokenInteractivelyAsync (
323
330
windowHandle ,
324
331
authParams ,
325
- request . correlationId ,
332
+ platformRequest . correlationId ,
326
333
account ,
327
334
resultCallback
328
335
) ;
329
336
} else {
330
337
this . logger . info (
331
338
"Calling native interop SignIn API" ,
332
- request . correlationId
339
+ platformRequest . correlationId
333
340
) ;
334
341
const loginHint =
335
- request . loginHint || Constants . EMPTY_STRING ;
342
+ platformRequest . loginHint ||
343
+ Constants . EMPTY_STRING ;
336
344
msalNodeRuntime . SignInAsync (
337
345
windowHandle ,
338
346
authParams ,
339
- request . correlationId ,
347
+ platformRequest . correlationId ,
340
348
loginHint ,
341
349
resultCallback
342
350
) ;
@@ -457,7 +465,10 @@ export class NativeBrokerPlugin implements INativeBrokerPlugin {
457
465
request . clientId ,
458
466
request . authority
459
467
) ;
460
- authParams . SetRedirectUri ( request . redirectUri ) ;
468
+
469
+ authParams . SetRedirectUri (
470
+ this . chooseRedirectUriByPlatform ( request )
471
+ ) ;
461
472
authParams . SetRequestedScopes ( request . scopes . join ( " " ) ) ;
462
473
463
474
if ( request . claims ) {
@@ -516,6 +527,26 @@ export class NativeBrokerPlugin implements INativeBrokerPlugin {
516
527
return authParams ;
517
528
}
518
529
530
+ private chooseRedirectUriByPlatform ( request : NativeRequest ) : string {
531
+ this . logger . trace (
532
+ "NativeBrokerPlugin - chooseRedirectUriByPlatform called" ,
533
+ request . correlationId
534
+ ) ;
535
+ let redirectUri : string ;
536
+ switch ( process . platform ) {
537
+ case "darwin" :
538
+ redirectUri = "msauth.com.msauth.unsignedapp://auth" ;
539
+ break ;
540
+ case "win32" :
541
+ redirectUri = `ms-appx-web://Microsoft.AAD.BrokerPlugin/${ request . clientId } ` ;
542
+ break ;
543
+ default :
544
+ redirectUri =
545
+ "https://login.microsoftonline.com/common/oauth2/nativeclient" ;
546
+ }
547
+ return redirectUri ;
548
+ }
549
+
519
550
private getAuthenticationResult (
520
551
request : NativeRequest ,
521
552
authResult : AuthResult
0 commit comments