From 1a1ab8a43533a562f0928777c4049f9e56d7bd57 Mon Sep 17 00:00:00 2001 From: Rachel Macfarlane Date: Fri, 12 Jun 2020 15:07:47 -0700 Subject: [PATCH] Better handling for MS auth provider when refresh token is not requested --- extensions/microsoft-authentication/src/AADHelper.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/extensions/microsoft-authentication/src/AADHelper.ts b/extensions/microsoft-authentication/src/AADHelper.ts index ebc453cc2ad..3d735363295 100644 --- a/extensions/microsoft-authentication/src/AADHelper.ts +++ b/extensions/microsoft-authentication/src/AADHelper.ts @@ -87,6 +87,10 @@ export class AzureActiveDirectoryService { try { const sessions = this.parseStoredData(storedData); const refreshes = sessions.map(async session => { + if (!session.refreshToken) { + return Promise.resolve(); + } + try { await this.refreshToken(session.refreshToken, session.scope, session.id); } catch (e) { @@ -148,7 +152,7 @@ export class AzureActiveDirectoryService { const sessions = this.parseStoredData(storedData); let promises = sessions.map(async session => { const matchesExisting = this._tokens.some(token => token.scope === session.scope && token.sessionId === session.id); - if (!matchesExisting) { + if (!matchesExisting && session.refreshToken) { try { await this.refreshToken(session.refreshToken, session.scope, session.id); addedIds.push(session.id); @@ -242,6 +246,10 @@ export class AzureActiveDirectoryService { public async login(scope: string): Promise { Logger.info('Logging in...'); + if (!scope.includes('offline_access')) { + Logger.info('Warning: The \'offline_access\' scope was not included, so the generated token will not be able to be refreshed.'); + } + return new Promise(async (resolve, reject) => { if (vscode.env.uiKind === vscode.UIKind.Web) { resolve(this.loginWithoutLocalServer(scope)); -- GitLab