diff --git a/extensions/microsoft-authentication/src/AADHelper.ts b/extensions/microsoft-authentication/src/AADHelper.ts index 0f3ff17b9f8905305cd7c014d897972fc973628d..ecfc8456266d225dbb4b3a2aebddc1de781a78ce 100644 --- a/extensions/microsoft-authentication/src/AADHelper.ts +++ b/extensions/microsoft-authentication/src/AADHelper.ts @@ -68,6 +68,7 @@ export interface ITokenResponse { refresh_token: string; scope: string; token_type: string; + id_token: string; } function parseQuery(uri: vscode.Uri) { @@ -449,7 +450,15 @@ export class AzureActiveDirectoryService { } private getTokenFromResponse(json: ITokenResponse, scope: string, existingId?: string): IToken { - const claims = this.getTokenClaims(json.access_token); + let claims = undefined; + + try { + claims = this.getTokenClaims(json.access_token); + } catch { + Logger.info('Failed to fetch token claims from access_token. Attempting to parse id_token instead'); + claims = this.getTokenClaims(json.id_token); + } + return { expiresIn: json.expires_in, expiresAt: json.expires_in ? Date.now() + json.expires_in * 1000 : undefined,