Skip to content

Commit

Permalink
Preview release fixes (#368)
Browse files Browse the repository at this point in the history
* Fix release build

* Fix release version
  • Loading branch information
JohnSchmeichel committed Mar 3, 2023
1 parent 756f2d0 commit 1083572
Show file tree
Hide file tree
Showing 5 changed files with 49 additions and 40 deletions.
3 changes: 2 additions & 1 deletion Build.props
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<CredentialProviderVersion>1.0.2-preview</CredentialProviderVersion>
<CredentialProviderVersion>1.0.2</CredentialProviderVersion>
<VersionSuffix>-preview</VersionSuffix>
<TargetFrameworks>netcoreapp3.1;net461;net6.0</TargetFrameworks>
</PropertyGroup>
</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ public void MsaMatchesMsa()
{
foreach (var accounts in Permutations)
{
var applicable = MsalTokenProvider.GetApplicableAccounts(accounts, AuthUtil.FirstPartyTenant, loginHint: null);
var applicable = MsalUtil.GetApplicableAccounts(accounts, AuthUtil.FirstPartyTenant, loginHint: null);
Assert.AreEqual(applicable[0].Item1.Username, MsaUser.Username);
}
}
Expand All @@ -70,7 +70,7 @@ public void ContosoMatchesContoso()
{
foreach (var accounts in Permutations)
{
var applicable = MsalTokenProvider.GetApplicableAccounts(accounts, ContosoTenant, loginHint: null);
var applicable = MsalUtil.GetApplicableAccounts(accounts, ContosoTenant, loginHint: null);
Assert.AreEqual(applicable[0].Item1.Username, ContosoUser.Username);
}
}
Expand All @@ -80,7 +80,7 @@ public void FabrikamMatchesFabrikam()
{
foreach (var accounts in Permutations)
{
var applicable = MsalTokenProvider.GetApplicableAccounts(accounts, FabrikamTenant, loginHint: null);
var applicable = MsalUtil.GetApplicableAccounts(accounts, FabrikamTenant, loginHint: null);
Assert.AreEqual(applicable[0].Item1.Username, FabrikamUser.Username);
}
}
Expand All @@ -94,7 +94,7 @@ public void LoginHintOverride()
{
foreach (var loginHint in Permutations[0].Select(a => a.Username))
{
var applicable = MsalTokenProvider.GetApplicableAccounts(accounts, tenantId, loginHint);
var applicable = MsalUtil.GetApplicableAccounts(accounts, tenantId, loginHint);
Assert.AreEqual(applicable[0].Item1.Username, loginHint);
}
}
Expand All @@ -106,7 +106,7 @@ public void UnknownAuthorityTenantPrefersMsa()
{
foreach (var accounts in Permutations)
{
var applicable = MsalTokenProvider.GetApplicableAccounts(accounts, Guid.Empty, loginHint: null);
var applicable = MsalUtil.GetApplicableAccounts(accounts, Guid.Empty, loginHint: null);
Assert.AreEqual(applicable[0].Item1.Username, MsaUser.Username);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -122,37 +122,6 @@ public async Task<IMsalToken> AcquireTokenWithDeviceFlowAsync(Func<DeviceCodeRes
return new MsalToken(result);
}

internal static List<(IAccount, string)> GetApplicableAccounts(IEnumerable<IAccount> accounts, Guid authorityTenantId, string loginHint)
{
var applicableAccounts = new List<(IAccount, string)>();

foreach (var account in accounts)
{
string canonicalName = $"{account.HomeAccountId?.TenantId}\\{account.Username}";

// If a login hint is provided and matches, try that first
if (!string.IsNullOrEmpty(loginHint) && account.Username == loginHint)
{
applicableAccounts.Insert(0, (account, canonicalName));
continue;
}

if (Guid.TryParse(account.HomeAccountId?.TenantId, out Guid accountTenantId))
{
if (accountTenantId == authorityTenantId)
{
applicableAccounts.Add((account, canonicalName));
}
else if (accountTenantId == AuthUtil.MsaAccountTenant && (authorityTenantId == AuthUtil.FirstPartyTenant || authorityTenantId == Guid.Empty))
{
applicableAccounts.Add((account, canonicalName));
}
}
}

return applicableAccounts;
}

public async Task<IMsalToken> AcquireTokenSilentlyAsync(CancellationToken cancellationToken)
{
IPublicClientApplication publicClient = await GetPCAAsync().ConfigureAwait(false);
Expand All @@ -175,7 +144,7 @@ public async Task<IMsalToken> AcquireTokenSilentlyAsync(CancellationToken cancel

string loginHint = EnvUtil.GetMsalLoginHint();

var applicableAccounts = GetApplicableAccounts(accounts, authorityTenantId, loginHint);
var applicableAccounts = MsalUtil.GetApplicableAccounts(accounts, authorityTenantId, loginHint);

if (this.brokerEnabled && RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
{
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
using System;
using System.Collections.Generic;
using Microsoft.Identity.Client;

namespace NuGetCredentialProvider.CredentialProviders.Vsts
{
public class MsalUtil
{
public static List<(IAccount, string)> GetApplicableAccounts(IEnumerable<IAccount> accounts, Guid authorityTenantId, string loginHint)
{
var applicableAccounts = new List<(IAccount, string)>();

foreach (var account in accounts)
{
string canonicalName = $"{account.HomeAccountId?.TenantId}\\{account.Username}";

// If a login hint is provided and matches, try that first
if (!string.IsNullOrEmpty(loginHint) && account.Username == loginHint)
{
applicableAccounts.Insert(0, (account, canonicalName));
continue;
}

if (Guid.TryParse(account.HomeAccountId?.TenantId, out Guid accountTenantId))
{
if (accountTenantId == authorityTenantId)
{
applicableAccounts.Add((account, canonicalName));
}
else if (accountTenantId == AuthUtil.MsaAccountTenant && (authorityTenantId == AuthUtil.FirstPartyTenant || authorityTenantId == Guid.Empty))
{
applicableAccounts.Add((account, canonicalName));
}
}
}

return applicableAccounts;
}
}
}
3 changes: 1 addition & 2 deletions CredentialProvider.Microsoft/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@
using PowerArgs;
using ILogger = NuGetCredentialProvider.Logging.ILogger;

[assembly: InternalsVisibleToAttribute("CredentialProvider.Microsoft.Tests")]
namespace NuGetCredentialProvider
{
public static class Program
Expand Down Expand Up @@ -284,4 +283,4 @@ private static ILogger GetFileLogger()
return new LogEveryMessageFileLogger(location);
}
}
}
}

0 comments on commit 1083572

Please sign in to comment.