Fallback to 'common' tenant if 'tid' not found (#21388)

This commit is contained in:
Cheena Malhotra
2022-12-12 12:31:14 -08:00
committed by GitHub
parent 2626f24d5a
commit abc7ada902

View File

@@ -474,6 +474,7 @@ export abstract class AzureAuth implements vscode.Disposable {
const homeTenant = tenants.splice(homeTenantIndex, 1); const homeTenant = tenants.splice(homeTenantIndex, 1);
tenants.unshift(homeTenant[0]); tenants.unshift(homeTenant[0]);
} }
Logger.verbose(`Filtered Tenants: ${tenantList}`);
return tenants; return tenants;
} catch (ex) { } catch (ex) {
Logger.error(`Error fetching tenants :${ex}`); Logger.error(`Error fetching tenants :${ex}`);
@@ -676,10 +677,11 @@ export abstract class AzureAuth implements vscode.Disposable {
//#region data modeling //#region data modeling
public createAccount(tokenClaims: TokenClaims, key: string, tenants: Tenant[]): AzureAccount { 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) => { tenants.forEach((tenant) => {
Logger.verbose(`Tenant ID: ${tenant.id}, Tenant Name: ${tenant.displayName}`); Logger.verbose(`Tenant ID: ${tenant.id}, Tenant Name: ${tenant.displayName}`);
}); });
// Determine if this is a microsoft account // Determine if this is a microsoft account
let accountIssuer = 'unknown'; 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 name = tokenClaims.name ?? tokenClaims.email ?? tokenClaims.unique_name ?? tokenClaims.preferred_username;
const email = 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 // Read more about tid > https://learn.microsoft.com/azure/active-directory/develop/id-tokens
const owningTenant = tenants.find(t => t.id === tokenClaims.tid) if (tokenClaims.tid) {
?? { 'id': tokenClaims.tid, 'displayName': 'Microsoft Account' }; 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; let displayName = name;
if (email) { if (email) {