From abc7ada902b26ef90988d06c4bb555e0c175eaf1 Mon Sep 17 00:00:00 2001 From: Cheena Malhotra <13396919+cheenamalhotra@users.noreply.github.com> Date: Mon, 12 Dec 2022 12:31:14 -0800 Subject: [PATCH] Fallback to 'common' tenant if 'tid' not found (#21388) --- .../src/account-provider/auths/azureAuth.ts | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/extensions/azurecore/src/account-provider/auths/azureAuth.ts b/extensions/azurecore/src/account-provider/auths/azureAuth.ts index 4a4bd5b47d..9aec664aee 100644 --- a/extensions/azurecore/src/account-provider/auths/azureAuth.ts +++ b/extensions/azurecore/src/account-provider/auths/azureAuth.ts @@ -474,6 +474,7 @@ export abstract class AzureAuth implements vscode.Disposable { const homeTenant = tenants.splice(homeTenantIndex, 1); tenants.unshift(homeTenant[0]); } + Logger.verbose(`Filtered Tenants: ${tenantList}`); return tenants; } catch (ex) { Logger.error(`Error fetching tenants :${ex}`); @@ -676,10 +677,11 @@ export abstract class AzureAuth implements vscode.Disposable { //#region data modeling public createAccount(tokenClaims: TokenClaims, key: string, tenants: Tenant[]): AzureAccount { - Logger.verbose(`Token Claims: ${tokenClaims.name}`); + Logger.verbose(`Token Claims acccount: ${tokenClaims.name}, TID: ${tokenClaims.tid}`); tenants.forEach((tenant) => { Logger.verbose(`Tenant ID: ${tenant.id}, Tenant Name: ${tenant.displayName}`); }); + // Determine if this is a microsoft account let accountIssuer = 'unknown'; @@ -694,9 +696,14 @@ export abstract class AzureAuth implements vscode.Disposable { const name = tokenClaims.name ?? tokenClaims.email ?? tokenClaims.unique_name ?? tokenClaims.preferred_username; const email = tokenClaims.email ?? tokenClaims.unique_name ?? tokenClaims.preferred_username; + let owningTenant: Tenant = this.commonTenant; // default to common tenant + // Read more about tid > https://learn.microsoft.com/azure/active-directory/develop/id-tokens - const owningTenant = tenants.find(t => t.id === tokenClaims.tid) - ?? { 'id': tokenClaims.tid, 'displayName': 'Microsoft Account' }; + if (tokenClaims.tid) { + owningTenant = tenants.find(t => t.id === tokenClaims.tid) ?? { 'id': tokenClaims.tid, 'displayName': 'Microsoft Account' }; + } else { + Logger.info('Could not find tenant information from tokenClaims, falling back to common Tenant.'); + } let displayName = name; if (email) {