Skip to content

Removing exceptions thrown for AccessToken authentication #5135

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 2 commits into from
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -78,10 +78,6 @@ private static string GetTenantId(IAzureContext context)
if (context.Account == null)
throw new ArgumentException(KeyVaultProperties.Resources.ArmAccountNotFound);

if (context.Account.Type != AzureAccount.AccountType.User &&
context.Account.Type != AzureAccount.AccountType.ServicePrincipal)
throw new ArgumentException(string.Format(KeyVaultProperties.Resources.UnsupportedAccountType, context.Account.Type));

if (context.Subscription != null && context.Account != null)
tenantId = context.Subscription.GetPropertyAsArray(AzureSubscription.Property.Tenants)
.Intersect(context.Account.GetPropertyAsArray(AzureAccount.Property.Tenants))
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@markcowl This code retrieves looks for the tenant ID in two different places. The code around this line is intersecting subscription tenants with account tenants. If we don't find the tenant here, then we retrieve the tenant from the context Tenant property. Do you know of a reason that we shouldn't just retrieve the tenant directly from the context rather than doing the whole intersecting thing?

Also, are we guaranteed to be able to get a tenant id regardless of Account.Type? In other words, can we/should we throw if we don't find a tenant id at all?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@RandalliLama It is best practice to get the tenant from the context

Expand All @@ -94,8 +90,6 @@ private static string GetTenantId(IAzureContext context)

private static Tuple<IAccessToken, string> GetTokenInternal(string tenantId, IAuthenticationFactory authFactory, IAzureContext context, string resourceIdEndpoint)
{
if (string.IsNullOrWhiteSpace(tenantId))
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is this being removed?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@markcowl This was removed because in the case that we don't get the tenant (with Account.Type being User or ServicePrincipal), I didn't want it to fail.

However, looks like we'd want to grab the tenant from the context in this case - does that sound reasonable? If so I'll go ahead and change it up that way.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@tiffanyachen Correct, that would eb the correct thing to do here.

throw new ArgumentException(KeyVaultProperties.Resources.NoTenantInContext);

try
{
Expand Down