diff --git a/VisualStudioTeamServices.Authentication/Proxy/VisualStudioTeamServices.Authentication.Proxy.csproj b/AzureDevOps.Authentication/Proxy/AzureDevOps.Authentication.Proxy.csproj
similarity index 92%
rename from VisualStudioTeamServices.Authentication/Proxy/VisualStudioTeamServices.Authentication.Proxy.csproj
rename to AzureDevOps.Authentication/Proxy/AzureDevOps.Authentication.Proxy.csproj
index 0aa4b209f..a5a137283 100644
--- a/VisualStudioTeamServices.Authentication/Proxy/VisualStudioTeamServices.Authentication.Proxy.csproj
+++ b/AzureDevOps.Authentication/Proxy/AzureDevOps.Authentication.Proxy.csproj
@@ -5,8 +5,8 @@
{04151231-4FA4-49B2-AE6D-EBDBA36B1169}
Properties
- VisualStudioTeamServices.Authentication.Test
- VisualStudioTeamServices.Authentication.Proxy
+ AzureDevOps.Authentication.Test
+ AzureDevOps.Authentication.Proxy
@@ -19,9 +19,9 @@
{19770407-b493-459d-bb4f-04fbefb1ba13}
Microsoft.Alm.Authentication
-
+
{19770407-d7d8-4a37-914c-f552ff4b90d4}
- VisualStudioTeamServices.Authentication
+ AzureDevOps.Authentication
diff --git a/VisualStudioTeamServices.Authentication/Proxy/CaptureAdal.cs b/AzureDevOps.Authentication/Proxy/CaptureAdal.cs
similarity index 99%
rename from VisualStudioTeamServices.Authentication/Proxy/CaptureAdal.cs
rename to AzureDevOps.Authentication/Proxy/CaptureAdal.cs
index 05df906f8..23279fbf9 100644
--- a/VisualStudioTeamServices.Authentication/Proxy/CaptureAdal.cs
+++ b/AzureDevOps.Authentication/Proxy/CaptureAdal.cs
@@ -29,7 +29,7 @@
using Microsoft.Alm.Authentication;
using Microsoft.Alm.Authentication.Test;
-namespace VisualStudioTeamServices.Authentication.Test
+namespace AzureDevOps.Authentication.Test
{
public class CaptureAdal : IAdal, ICaptureService
{
diff --git a/VisualStudioTeamServices.Authentication/Proxy/CapturedAdalData.cs b/AzureDevOps.Authentication/Proxy/CapturedAdalData.cs
similarity index 98%
rename from VisualStudioTeamServices.Authentication/Proxy/CapturedAdalData.cs
rename to AzureDevOps.Authentication/Proxy/CapturedAdalData.cs
index 6266adc88..19dbfa0fd 100644
--- a/VisualStudioTeamServices.Authentication/Proxy/CapturedAdalData.cs
+++ b/AzureDevOps.Authentication/Proxy/CapturedAdalData.cs
@@ -27,7 +27,7 @@
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
-namespace VisualStudioTeamServices.Authentication.Test
+namespace AzureDevOps.Authentication.Test
{
[System.Diagnostics.DebuggerDisplay("{DebuggerDisplay, nq}")]
public struct CapturedAdalData
diff --git a/VisualStudioTeamServices.Authentication/Proxy/Properties/AssemblyInfo.cs b/AzureDevOps.Authentication/Proxy/Properties/AssemblyInfo.cs
similarity index 87%
rename from VisualStudioTeamServices.Authentication/Proxy/Properties/AssemblyInfo.cs
rename to AzureDevOps.Authentication/Proxy/Properties/AssemblyInfo.cs
index 5073e1fa3..911581ce5 100644
--- a/VisualStudioTeamServices.Authentication/Proxy/Properties/AssemblyInfo.cs
+++ b/AzureDevOps.Authentication/Proxy/Properties/AssemblyInfo.cs
@@ -5,12 +5,12 @@
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
-[assembly: AssemblyTitle("VisualStudioTeamServices.Proxy")]
+[assembly: AssemblyTitle("AzureDevOps.Authentication.Proxy")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("VisualStudioTeamServices.Proxy")]
-[assembly: AssemblyCopyright("Copyright © 2018")]
+[assembly: AssemblyProduct("AzureDevOps.Authentication.Proxy")]
+[assembly: AssemblyCopyright("Copyright © Microsoft 2018")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
diff --git a/VisualStudioTeamServices.Authentication/Proxy/ReplayAdal.cs b/AzureDevOps.Authentication/Proxy/ReplayAdal.cs
similarity index 99%
rename from VisualStudioTeamServices.Authentication/Proxy/ReplayAdal.cs
rename to AzureDevOps.Authentication/Proxy/ReplayAdal.cs
index 0380c3569..ba9f5601f 100644
--- a/VisualStudioTeamServices.Authentication/Proxy/ReplayAdal.cs
+++ b/AzureDevOps.Authentication/Proxy/ReplayAdal.cs
@@ -30,7 +30,7 @@
using Microsoft.Alm.Authentication.Test;
using static System.StringComparer;
-namespace VisualStudioTeamServices.Authentication.Test
+namespace AzureDevOps.Authentication.Test
{
public class ReplayAdal : IAdal, IReplayService
{
diff --git a/VisualStudioTeamServices.Authentication/Proxy/UnitTestBase.cs b/AzureDevOps.Authentication/Proxy/UnitTestBase.cs
similarity index 97%
rename from VisualStudioTeamServices.Authentication/Proxy/UnitTestBase.cs
rename to AzureDevOps.Authentication/Proxy/UnitTestBase.cs
index e30abccf5..cdd5c64f6 100644
--- a/VisualStudioTeamServices.Authentication/Proxy/UnitTestBase.cs
+++ b/AzureDevOps.Authentication/Proxy/UnitTestBase.cs
@@ -26,7 +26,7 @@
using System.Runtime.CompilerServices;
using Microsoft.Alm.Authentication.Test;
-namespace VisualStudioTeamServices.Authentication.Test
+namespace AzureDevOps.Authentication.Test
{
public class UnitTestBase : Microsoft.Alm.Authentication.Test.UnitTestBase
{
diff --git a/VisualStudioTeamServices.Authentication/Proxy/app.config b/AzureDevOps.Authentication/Proxy/app.config
similarity index 100%
rename from VisualStudioTeamServices.Authentication/Proxy/app.config
rename to AzureDevOps.Authentication/Proxy/app.config
diff --git a/VisualStudioTeamServices.Authentication/Proxy/packages.config b/AzureDevOps.Authentication/Proxy/packages.config
similarity index 100%
rename from VisualStudioTeamServices.Authentication/Proxy/packages.config
rename to AzureDevOps.Authentication/Proxy/packages.config
diff --git a/VisualStudioTeamServices.Authentication/Src/AadAuthentication.cs b/AzureDevOps.Authentication/Src/AadAuthentication.cs
similarity index 89%
rename from VisualStudioTeamServices.Authentication/Src/AadAuthentication.cs
rename to AzureDevOps.Authentication/Src/AadAuthentication.cs
index 4e9b86085..8bbfa9557 100644
--- a/VisualStudioTeamServices.Authentication/Src/AadAuthentication.cs
+++ b/AzureDevOps.Authentication/Src/AadAuthentication.cs
@@ -27,7 +27,7 @@
using System.Threading.Tasks;
using Microsoft.Alm.Authentication;
-namespace VisualStudioTeamServices.Authentication
+namespace AzureDevOps.Authentication
{
///
/// Facilitates Azure Directory authentication.
@@ -54,12 +54,12 @@ public sealed class AadAuthentication : Authentication, IAadAuthentication
{
if (tenantId == Guid.Empty)
{
- Authority = new Authority(context, VisualStudioTeamServices.Authentication.Authority.DefaultAuthorityHostUrl);
+ Authority = new Authority(context, AzureDevOps.Authentication.Authority.DefaultAuthorityHostUrl);
}
else
{
// Create an authority host URL in the format of https://login.microsoft.com/12345678-9ABC-DEF0-1234-56789ABCDEF0.
- string authorityHost = VisualStudioTeamServices.Authentication.Authority.GetAuthorityUrl(tenantId);
+ string authorityHost = AzureDevOps.Authentication.Authority.GetAuthorityUrl(tenantId);
Authority = new Authority(context, authorityHost);
}
}
@@ -70,22 +70,22 @@ public sealed class AadAuthentication : Authentication, IAadAuthentication
internal AadAuthentication(
RuntimeContext context,
ICredentialStore personalAccessTokenStore,
- ITokenStore vstsIdeTokenCache,
- IAuthority vstsAuthority)
+ ITokenStore vsIdeTokenCache,
+ IAuthority devopsAuthority)
: base(context,
personalAccessTokenStore,
- vstsIdeTokenCache,
- vstsAuthority)
+ vsIdeTokenCache,
+ devopsAuthority)
{ }
///
- /// Creates an interactive logon session, using ADAL secure browser GUI, which enables users to authenticate with the Azure tenant and acquire the necessary access tokens to exchange for a VSTS personal access token.
+ /// Creates an interactive logon session, using ADAL secure browser GUI, which enables users to authenticate with the Azure tenant and acquire the necessary access tokens to exchange for an Azure DevOps Services personal access token.
///
/// Tokens acquired are stored in the secure secret stores provided during initialization.
///
/// Return a `` for resource access if successful; otherwise ``.
///
- /// The URI of the VSTS resource.
+ /// The URI of the Azure DevOps resource.
public async Task InteractiveLogon(TargetUri targetUri, PersonalAccessTokenOptions options)
{
BaseSecureStore.ValidateTargetUri(targetUri);
@@ -110,13 +110,13 @@ public async Task InteractiveLogon(TargetUri targetUri, PersonalAcce
}
///
- /// Creates an interactive logon session, using ADAL secure browser GUI, which enables users to authenticate with the Azure tenant and acquire the necessary access tokens to exchange for a VSTS personal access token.
+ /// Creates an interactive logon session, using ADAL secure browser GUI, which enables users to authenticate with the Azure tenant and acquire the necessary access tokens to exchange for an Azure DevOps personal access token.
///
/// Tokens acquired are stored in the secure secret stores provided during initialization.
///
/// Return a `` for resource access if successful; otherwise ``.
///
- /// The URI of the VSTS resource.
+ /// The URI of the Azure DevOps resource.
///
/// Requests a compact format personal access token if ``; otherwise requests a standard format personal access token.
///
@@ -147,14 +147,14 @@ public async Task InteractiveLogon(TargetUri targetUri, bool request
}
///
- /// Uses Active Directory Federation Services to authenticate with the Azure tenant non-interactively and acquire the necessary access tokens to exchange for a VSTS personal access token.
+ /// Uses Active Directory Federation Services to authenticate with the Azure tenant non-interactively and acquire the necessary access tokens to exchange for an Azure DevOps personal access token.
///
/// Tokens acquired are stored in the secure secret stores provided during initialization.
///
/// Return a `` for resource access if successful; otherwise ``.
///
- /// The URL of the VSTS resource.
- /// Options related to VSTS personal access creation.
+ /// The URL of the Azure DevOps resource.
+ /// Options related to Azure DevOps personal access creation.
public async Task NoninteractiveLogon(TargetUri targetUri, PersonalAccessTokenOptions options)
{
BaseSecureStore.ValidateTargetUri(targetUri);
@@ -171,7 +171,7 @@ public async Task NoninteractiveLogon(TargetUri targetUri, PersonalA
}
catch (AuthenticationException)
{
- Trace.WriteLine($"failed to acquire for '{targetUri}' token from VstsAuthority.");
+ Trace.WriteLine($"failed to acquire for '{targetUri}' token from Azure DevOps Authority.");
}
Trace.WriteLine($"non-interactive logon for '{targetUri}' failed");
@@ -179,13 +179,13 @@ public async Task NoninteractiveLogon(TargetUri targetUri, PersonalA
}
///
- /// Uses Active Directory Federation Services to authenticate with the Azure tenant non-interactively and acquire the necessary access tokens to exchange for a VSTS personal access token.
+ /// Uses Active Directory Federation Services to authenticate with the Azure tenant non-interactively and acquire the necessary access tokens to exchange for an Azure DevOps Services personal access token.
///
/// Tokens acquired are stored in the secure secret stores provided during initialization.
///
/// Return a `` for resource access if successful; otherwise ``.
///
- /// The URL of the VSTS resource.
+ /// The URL of the Azure DevOps resource.
///
/// Requests a compact format personal access token if ``; otherwise requests a standard format personal access token.
///
@@ -208,7 +208,7 @@ public async Task NoninteractiveLogon(TargetUri targetUri, bool requ
}
catch (AuthenticationException)
{
- Trace.WriteLine($"failed to acquire for '{targetUri}' token from VstsAuthority.");
+ Trace.WriteLine($"failed to acquire for '{targetUri}' token from Azure DevOps Authority.");
}
Trace.WriteLine($"non-interactive logon for '{targetUri}' failed");
diff --git a/VisualStudioTeamServices.Authentication/Src/Adal.cs b/AzureDevOps.Authentication/Src/Adal.cs
similarity index 99%
rename from VisualStudioTeamServices.Authentication/Src/Adal.cs
rename to AzureDevOps.Authentication/Src/Adal.cs
index a2e89942f..7568ff7ad 100644
--- a/VisualStudioTeamServices.Authentication/Src/Adal.cs
+++ b/AzureDevOps.Authentication/Src/Adal.cs
@@ -29,7 +29,7 @@
using AdalExtentions = Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContextIntegratedAuthExtensions;
using Alm = Microsoft.Alm.Authentication;
-namespace VisualStudioTeamServices.Authentication
+namespace AzureDevOps.Authentication
{
public interface IAdal : Alm.IRuntimeService
{
diff --git a/VisualStudioTeamServices.Authentication/Src/AdalTokenCache.cs b/AzureDevOps.Authentication/Src/AdalTokenCache.cs
similarity index 98%
rename from VisualStudioTeamServices.Authentication/Src/AdalTokenCache.cs
rename to AzureDevOps.Authentication/Src/AdalTokenCache.cs
index a15fb4d73..5e9406b99 100644
--- a/VisualStudioTeamServices.Authentication/Src/AdalTokenCache.cs
+++ b/AzureDevOps.Authentication/Src/AdalTokenCache.cs
@@ -30,7 +30,7 @@
using Microsoft.Alm.Authentication;
using ActiveDirectory = Microsoft.IdentityModel.Clients.ActiveDirectory;
-namespace VisualStudioTeamServices.Authentication
+namespace AzureDevOps.Authentication
{
internal class AdalTokenCache : ActiveDirectory.TokenCache
{
diff --git a/VisualStudioTeamServices.Authentication/Src/Authentication.cs b/AzureDevOps.Authentication/Src/Authentication.cs
similarity index 96%
rename from VisualStudioTeamServices.Authentication/Src/Authentication.cs
rename to AzureDevOps.Authentication/Src/Authentication.cs
index b0c8187db..e23a6eb93 100644
--- a/VisualStudioTeamServices.Authentication/Src/Authentication.cs
+++ b/AzureDevOps.Authentication/Src/Authentication.cs
@@ -33,12 +33,12 @@
using Microsoft.Alm.Authentication;
using static System.StringComparer;
-using static VisualStudioTeamServices.Authentication.Authority;
+using static AzureDevOps.Authentication.Authority;
-namespace VisualStudioTeamServices.Authentication
+namespace AzureDevOps.Authentication
{
///
- /// Base functionality for performing authentication operations against Visual Studio Online.
+ /// Base functionality for performing authentication operations against Azure DevOps.
///
public abstract class Authentication : BaseAuthentication
{
@@ -48,8 +48,8 @@ public abstract class Authentication : BaseAuthentication
protected const string AdalRefreshPrefix = "ada";
- internal const string AzureBaseUrlHost = VisualStudioTeamServices.Authentication.Authority.AzureBaseUrlHost;
- internal const string VstsBaseUrlHost = VisualStudioTeamServices.Authentication.Authority.VstsBaseUrlHost;
+ internal const string AzureBaseUrlHost = AzureDevOps.Authentication.Authority.AzureBaseUrlHost;
+ internal const string VstsBaseUrlHost = AzureDevOps.Authentication.Authority.VstsBaseUrlHost;
private const char CachePairSeperator = '=';
private const char CachePairTerminator = '\0';
@@ -161,7 +161,7 @@ public override async Task DeleteCredentials(TargetUri targetUri)
///
/// Detects the backing authority of the end-point.
///
- /// Returns `` if the authority is Visual Studio Online, along with the tenant identity; `` otherwise.
+ /// Returns `` if the authority is Azure DevOps, along with the tenant identity; `` otherwise.
///
/// The resource which the authority protects.
/// The identity of the authority tenant; `` otherwise.
@@ -170,14 +170,14 @@ public override async Task DeleteCredentials(TargetUri targetUri)
public static async Task DetectAuthority(RuntimeContext context, TargetUri targetUri)
{
const int GuidStringLength = 36;
- const string VstsResourceTenantHeader = "X-VSS-ResourceTenant";
+ const string XvssResourceTenantHeader = "X-VSS-ResourceTenant";
if (context is null)
throw new ArgumentNullException(nameof(context));
if (targetUri is null)
throw new ArgumentNullException(nameof(targetUri));
- // Assume VSTS using Azure "common tenant" (empty GUID).
+ // Assume Azure DevOps using Azure "common tenant" (empty GUID).
var tenantId = Guid.Empty;
// Compose the request Uri, by default it is the target Uri.
@@ -202,7 +202,7 @@ public override async Task DeleteCredentials(TargetUri targetUri)
// Check the cache for an existing value.
if (cache.TryGetValue(requestUrl, out tenantId))
{
- context.Trace.WriteLine($"'{requestUrl}' is VSTS, tenant resource is {{{tenantId.ToString("N")}}}.");
+ context.Trace.WriteLine($"'{requestUrl}' is Azure DevOps, tenant resource is {{{tenantId.ToString("N")}}}.");
return tenantId;
}
@@ -215,15 +215,15 @@ public override async Task DeleteCredentials(TargetUri targetUri)
try
{
- // Query the host use the response headers to determine if the host is VSTS or not.
+ // Query the host use the response headers to determine if the host is Azure DevOps or not.
using (var response = await context.Network.HttpHeadAsync(requestUri, options))
{
if (response.Headers != null)
{
- // If the "X-VSS-ResourceTenant" was returned, then it is VSTS and we'll need it's value.
- if (response.Headers.TryGetValues(VstsResourceTenantHeader, out IEnumerable values))
+ // If the "X-VSS-ResourceTenant" was returned, then it is Azure DevOps and we'll need it's value.
+ if (response.Headers.TryGetValues(XvssResourceTenantHeader, out IEnumerable values))
{
- context.Trace.WriteLine($"detected '{requestUrl}' as VSTS from GET response.");
+ context.Trace.WriteLine($"detected '{requestUrl}' as Azure DevOps from GET response.");
// The "Www-Authenticate" is a more reliable header, because it indicates the
// authentication scheme that should be used to access the requested entity.
@@ -293,7 +293,7 @@ public override async Task DeleteCredentials(TargetUri targetUri)
context.Trace.WriteLine($"tenant resource for '{requestUrl}' is {{{tenantId.ToString("N")}}}.");
- // Return the tenant identity to the caller because this is VSTS.
+ // Return the tenant identity to the caller because this is Azure DevOps.
return tenantId;
}
}
@@ -521,7 +521,7 @@ internal static string GetSecretKey(TargetUri targetUri, string prefix)
// When the full path is specified, there's no reason to assume the path; otherwise attempt to
// detect the actual target path information.
- string targetUrl = (IsVstsUrl(targetUri) && !targetUri.HasPath)
+ string targetUrl = (IsAzureDevOpsUrl(targetUri) && !targetUri.HasPath)
? GetTargetUrl(targetUri, true)
: targetUri.ToString(true, true, true);
diff --git a/VisualStudioTeamServices.Authentication/Src/AuthenticationException.cs b/AzureDevOps.Authentication/Src/AuthenticationException.cs
similarity index 97%
rename from VisualStudioTeamServices.Authentication/Src/AuthenticationException.cs
rename to AzureDevOps.Authentication/Src/AuthenticationException.cs
index 28771f953..9e4a8d758 100644
--- a/VisualStudioTeamServices.Authentication/Src/AuthenticationException.cs
+++ b/AzureDevOps.Authentication/Src/AuthenticationException.cs
@@ -26,7 +26,7 @@
using System;
using System.Runtime.Serialization;
-namespace VisualStudioTeamServices.Authentication
+namespace AzureDevOps.Authentication
{
[Serializable]
public class AuthenticationException : Exception
diff --git a/VisualStudioTeamServices.Authentication/Src/Authority.cs b/AzureDevOps.Authentication/Src/Authority.cs
similarity index 98%
rename from VisualStudioTeamServices.Authentication/Src/Authority.cs
rename to AzureDevOps.Authentication/Src/Authority.cs
index 4a61e2630..4aaf8958f 100644
--- a/VisualStudioTeamServices.Authentication/Src/Authority.cs
+++ b/AzureDevOps.Authentication/Src/Authority.cs
@@ -34,7 +34,7 @@
using static System.StringComparer;
using Culture = System.Globalization.CultureInfo;
-namespace VisualStudioTeamServices.Authentication
+namespace AzureDevOps.Authentication
{
///
/// Interfaces with Azure to perform authentication and identity services.
@@ -57,7 +57,7 @@ internal class Authority : Base, IAuthority
public const string DefaultAuthorityHostUrl = AuthorityHostUrlBase + "/common";
///
- /// The root domain of VSTS hosted repositories.
+ /// The root domain of Azure DevOps hosted repositories.
///
public const string VstsBaseUrlHost = "visualstudio.com";
@@ -259,7 +259,7 @@ public async Task PopulateTokenTargetId(TargetUri targetUri, Token authori
try
{
- // Create an request to the VSTS deployment data end-point.
+ // Create an request to the Azure DevOps deployment data end-point.
var requestUri = GetConnectionDataUri(targetUri);
var options = new NetworkRequestOptions(true)
{
@@ -325,14 +325,14 @@ public async Task ValidateToken(TargetUri targetUri, Token token)
internal static TargetUri GetConnectionDataUri(TargetUri targetUri)
{
- const string VstsValidationUrlPath = "_apis/connectiondata";
+ const string AzureDevOpsValidationUrlPath = "_apis/connectiondata";
if (targetUri is null)
throw new ArgumentNullException(nameof(targetUri));
// Create a URL to the connection data end-point, it's deployment level and "always on".
string requestUrl = GetTargetUrl(targetUri, false);
- string validationUrl = requestUrl + VstsValidationUrlPath;
+ string validationUrl = requestUrl + AzureDevOpsValidationUrlPath;
return targetUri.CreateWith(validationUrl);
}
@@ -417,7 +417,7 @@ internal static string GetTargetUrl(TargetUri targetUri, bool keepUsername)
return requestUrl;
}
- internal static bool IsVstsUrl(TargetUri targetUri)
+ internal static bool IsAzureDevOpsUrl(TargetUri targetUri)
{
return (OrdinalIgnoreCase.Equals(targetUri.Scheme, Uri.UriSchemeHttp)
|| OrdinalIgnoreCase.Equals(targetUri.Scheme, Uri.UriSchemeHttps))
@@ -435,7 +435,7 @@ internal async Task ValidateSecret(TargetUri targetUri, Secret secret)
if (secret is null)
return false;
- // Create an request to the VSTS deployment data end-point.
+ // Create an request to the Azure DevOps deployment data end-point.
var requestUri = GetConnectionDataUri(targetUri);
var options = new NetworkRequestOptions(true)
{
diff --git a/VisualStudioTeamServices.Authentication/Src/VisualStudioTeamServices.Authentication.csproj b/AzureDevOps.Authentication/Src/AzureDevOps.Authentication.csproj
similarity index 93%
rename from VisualStudioTeamServices.Authentication/Src/VisualStudioTeamServices.Authentication.csproj
rename to AzureDevOps.Authentication/Src/AzureDevOps.Authentication.csproj
index 35e8f4e4d..7d81070b4 100644
--- a/VisualStudioTeamServices.Authentication/Src/VisualStudioTeamServices.Authentication.csproj
+++ b/AzureDevOps.Authentication/Src/AzureDevOps.Authentication.csproj
@@ -4,12 +4,12 @@
Properties
- VisualStudioTeamServices.Authentication
-
+ AzureDevOps.Authentication
+
Library
{19770407-D7D8-4A37-914C-F552FF4B90D4}
- VisualStudioTeamServices.Authentication
- VisualStudioTeamServices.Authentication
+ AzureDevOps.Authentication
+ AzureDevOps.Authentication
v4.5.1
diff --git a/VisualStudioTeamServices.Authentication/Src/Base.cs b/AzureDevOps.Authentication/Src/Base.cs
similarity index 97%
rename from VisualStudioTeamServices.Authentication/Src/Base.cs
rename to AzureDevOps.Authentication/Src/Base.cs
index 37913bc1c..d56bec0af 100644
--- a/VisualStudioTeamServices.Authentication/Src/Base.cs
+++ b/AzureDevOps.Authentication/Src/Base.cs
@@ -25,7 +25,7 @@
using Microsoft.Alm.Authentication;
-namespace VisualStudioTeamServices.Authentication
+namespace AzureDevOps.Authentication
{
public abstract class Base : Microsoft.Alm.Authentication.Base
{
diff --git a/VisualStudioTeamServices.Authentication/Src/IAadAuthentication.cs b/AzureDevOps.Authentication/Src/IAadAuthentication.cs
similarity index 86%
rename from VisualStudioTeamServices.Authentication/Src/IAadAuthentication.cs
rename to AzureDevOps.Authentication/Src/IAadAuthentication.cs
index a3879a5ba..3dfd266f2 100644
--- a/VisualStudioTeamServices.Authentication/Src/IAadAuthentication.cs
+++ b/AzureDevOps.Authentication/Src/IAadAuthentication.cs
@@ -27,28 +27,28 @@
using System.Threading.Tasks;
using Microsoft.Alm.Authentication;
-namespace VisualStudioTeamServices.Authentication
+namespace AzureDevOps.Authentication
{
public interface IAadAuthentication
{
///
- /// Creates an interactive logon session, using ADAL secure browser GUI, which enables users to authenticate with the Azure tenant and acquire the necessary access tokens to exchange for a VSTS personal access token.
+ /// Creates an interactive logon session, using ADAL secure browser GUI, which enables users to authenticate with the Azure tenant and acquire the necessary access tokens to exchange for an Azure DevOps personal access token.
///
/// Tokens acquired are stored in the secure secret stores provided during initialization.
///
/// Return a `` for resource access if successful; otherwise ``.
///
- /// The URI of the VSTS resource.
+ /// The URI of the Azure DevOps resource.
Task InteractiveLogon(TargetUri targetUri, PersonalAccessTokenOptions options);
///
- /// Creates an interactive logon session, using ADAL secure browser GUI, which enables users to authenticate with the Azure tenant and acquire the necessary access tokens to exchange for a VSTS personal access token.
+ /// Creates an interactive logon session, using ADAL secure browser GUI, which enables users to authenticate with the Azure tenant and acquire the necessary access tokens to exchange for an Azure DevOps personal access token.
///
/// Tokens acquired are stored in the secure secret stores provided during initialization.
///
/// Return a `` for resource access if successful; otherwise ``.
///
- /// The URI of the VSTS resource.
+ /// The URI of the Azure DevOps resource.
///
/// Requests a compact format personal access token if ``; otherwise requests a standard format personal access token.
///
@@ -58,24 +58,24 @@ public interface IAadAuthentication
Task InteractiveLogon(TargetUri targetUri, bool requestCompactToken);
///
- /// Uses Active Directory Federation Services to authenticate with the Azure tenant non-interactively and acquire the necessary access tokens to exchange for a VSTS personal access token.
+ /// Uses Active Directory Federation Services to authenticate with the Azure tenant non-interactively and acquire the necessary access tokens to exchange for an Azure DevOps personal access token.
///
/// Tokens acquired are stored in the secure secret stores provided during initialization.
///
/// Return a `` for resource access if successful; otherwise ``.
///
- /// The URL of the VSTS resource.
- /// Options related to VSTS personal access creation.
+ /// The URL of the Azure DevOps resource.
+ /// Options related to Azure DevOps personal access creation.
Task NoninteractiveLogon(TargetUri targetUri, PersonalAccessTokenOptions options);
///
- /// Uses Active Directory Federation Services to authenticate with the Azure tenant non-interactively and acquire the necessary access tokens to exchange for a VSTS personal access token.
+ /// Uses Active Directory Federation Services to authenticate with the Azure tenant non-interactively and acquire the necessary access tokens to exchange for an Azure DevOps personal access token.
///
/// Tokens acquired are stored in the secure secret stores provided during initialization.
///
/// Return a `` for resource access if successful; otherwise ``.
///
- /// The URL of the VSTS resource.
+ /// The URL of the Azure DevOps resource.
///
/// Requests a compact format personal access token if ``; otherwise requests a standard format personal access token.
///
diff --git a/VisualStudioTeamServices.Authentication/Src/IAuthority.cs b/AzureDevOps.Authentication/Src/IAuthority.cs
similarity index 91%
rename from VisualStudioTeamServices.Authentication/Src/IAuthority.cs
rename to AzureDevOps.Authentication/Src/IAuthority.cs
index a3dd88883..5ac67909d 100644
--- a/VisualStudioTeamServices.Authentication/Src/IAuthority.cs
+++ b/AzureDevOps.Authentication/Src/IAuthority.cs
@@ -27,12 +27,12 @@
using System.Threading.Tasks;
using Microsoft.Alm.Authentication;
-namespace VisualStudioTeamServices.Authentication
+namespace AzureDevOps.Authentication
{
public interface IAuthority
{
///
- /// Generates a personal access token for use with Visual Studio Team Services.
+ /// Generates a personal access token for use with Azure DevOps.
///
/// Returns the acquired `` if successful; otherwise ``;
///
@@ -48,7 +48,7 @@ public interface IAuthority
Task GeneratePersonalAccessToken(TargetUri targetUri, Token accessToken, TokenScope tokenScope, bool requireCompactToken, TimeSpan? tokenDuration);
///
- /// Generates a personal access token for use with Visual Studio Team Services.
+ /// Generates a personal access token for use with Azure DevOps.
///
/// Returns the acquired `` if successful; otherwise ``;
///
@@ -82,21 +82,21 @@ public interface IAuthority
Task NoninteractiveAcquireToken(TargetUri targetUri, string clientId, string resource, Uri redirectUri);
///
- /// Validates that a `` is valid to grant access to the VSTS resource referenced by ``.
+ /// Validates that a `` is valid to grant access to the Azure DevOps resource referenced by ``.
///
/// Returns `` if successful; otherwise ``.
///
/// URI of the VSTS resource.
- /// `` expected to grant access to the VSTS service.
+ /// `` expected to grant access to the Azure DevOps service.
Task ValidateCredentials(TargetUri targetUri, Credential credentials);
///
- /// Validates that a `` is valid to grant access to the VSTS resource referenced by ``.
+ /// Validates that a `` is valid to grant access to the Azure DevOps resource referenced by ``.
///
/// Returns `` if successful; otherwise ``.
///
- /// URI of the VSTS resource.
- /// `` expected to grant access to the VSTS resource.
+ /// URI of the Azure DevOps resource.
+ /// `` expected to grant access to the Azure DevOps resource.
Task ValidateToken(TargetUri targetUri, Token token);
}
}
diff --git a/VisualStudioTeamServices.Authentication/Src/IMsaAuthentication.cs b/AzureDevOps.Authentication/Src/IMsaAuthentication.cs
similarity index 98%
rename from VisualStudioTeamServices.Authentication/Src/IMsaAuthentication.cs
rename to AzureDevOps.Authentication/Src/IMsaAuthentication.cs
index 99950944c..64cd1c08a 100644
--- a/VisualStudioTeamServices.Authentication/Src/IMsaAuthentication.cs
+++ b/AzureDevOps.Authentication/Src/IMsaAuthentication.cs
@@ -26,7 +26,7 @@
using System.Threading.Tasks;
using Microsoft.Alm.Authentication;
-namespace VisualStudioTeamServices.Authentication
+namespace AzureDevOps.Authentication
{
public interface IMsaAuthentication
{
diff --git a/VisualStudioTeamServices.Authentication/Src/LocationServiceException.cs b/AzureDevOps.Authentication/Src/LocationServiceException.cs
similarity index 97%
rename from VisualStudioTeamServices.Authentication/Src/LocationServiceException.cs
rename to AzureDevOps.Authentication/Src/LocationServiceException.cs
index 76560f1b7..c74380c4f 100644
--- a/VisualStudioTeamServices.Authentication/Src/LocationServiceException.cs
+++ b/AzureDevOps.Authentication/Src/LocationServiceException.cs
@@ -25,7 +25,7 @@
using System;
-namespace VisualStudioTeamServices.Authentication
+namespace AzureDevOps.Authentication
{
[Serializable]
public sealed class LocationServiceException : Exception, System.Runtime.Serialization.ISerializable
diff --git a/VisualStudioTeamServices.Authentication/Src/MsaAuthentication.cs b/AzureDevOps.Authentication/Src/MsaAuthentication.cs
similarity index 97%
rename from VisualStudioTeamServices.Authentication/Src/MsaAuthentication.cs
rename to AzureDevOps.Authentication/Src/MsaAuthentication.cs
index b38581ab0..51eb51daa 100644
--- a/VisualStudioTeamServices.Authentication/Src/MsaAuthentication.cs
+++ b/AzureDevOps.Authentication/Src/MsaAuthentication.cs
@@ -28,12 +28,12 @@
using System.Threading.Tasks;
using Microsoft.Alm.Authentication;
-namespace VisualStudioTeamServices.Authentication
+namespace AzureDevOps.Authentication
{
public sealed class MsaAuthentication : Authentication, IMsaAuthentication
{
- public const string DefaultAuthorityHost = VisualStudioTeamServices.Authentication.Authority.AuthorityHostUrlBase + "/live.com";
+ public const string DefaultAuthorityHost = AzureDevOps.Authentication.Authority.AuthorityHostUrlBase + "/live.com";
internal const string QueryParameters = "domain_hint=live.com&display=popup&site_id=501454&nux=1";
public MsaAuthentication(
diff --git a/VisualStudioTeamServices.Authentication/Src/PersonalAccessTokenOptions.cs b/AzureDevOps.Authentication/Src/PersonalAccessTokenOptions.cs
similarity index 93%
rename from VisualStudioTeamServices.Authentication/Src/PersonalAccessTokenOptions.cs
rename to AzureDevOps.Authentication/Src/PersonalAccessTokenOptions.cs
index bcf67b4af..5f695aab8 100644
--- a/VisualStudioTeamServices.Authentication/Src/PersonalAccessTokenOptions.cs
+++ b/AzureDevOps.Authentication/Src/PersonalAccessTokenOptions.cs
@@ -26,7 +26,7 @@
using System;
using System.Diagnostics;
-namespace VisualStudioTeamServices.Authentication
+namespace AzureDevOps.Authentication
{
[DebuggerDisplay("{DebuggerDisplay, nq}")]
public struct PersonalAccessTokenOptions
@@ -92,7 +92,7 @@ public TokenScope TokenScope
internal string DebuggerDisplay
{
- get { return $"{nameof(VisualStudioTeamServices.Authentication.TokenScope)}: {(_compact ? "Compact" : "Normal")} {((_scope == null) ? "Default" : _scope.Value)} [{(_duration.HasValue ? _duration.Value.ToString("u") : "Default")}]"; }
+ get { return $"{nameof(AzureDevOps.Authentication.TokenScope)}: {(_compact ? "Compact" : "Normal")} {((_scope == null) ? "Default" : _scope.Value)} [{(_duration.HasValue ? _duration.Value.ToString("u") : "Default")}]"; }
}
public override bool Equals(object obj)
diff --git a/VisualStudioTeamServices.Authentication/Src/Properties/AssemblyInfo.cs b/AzureDevOps.Authentication/Src/Properties/AssemblyInfo.cs
similarity index 69%
rename from VisualStudioTeamServices.Authentication/Src/Properties/AssemblyInfo.cs
rename to AzureDevOps.Authentication/Src/Properties/AssemblyInfo.cs
index fb32ea1ee..ab9a10b28 100644
--- a/VisualStudioTeamServices.Authentication/Src/Properties/AssemblyInfo.cs
+++ b/AzureDevOps.Authentication/Src/Properties/AssemblyInfo.cs
@@ -3,8 +3,8 @@
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
-[assembly: AssemblyTitle("Visual Studio Team Services Authentication")]
-[assembly: AssemblyDescription("Microsoft Visual Studio Team Services Authentication Library for Windows")]
+[assembly: AssemblyTitle("Azure DevOps Authentication")]
+[assembly: AssemblyDescription("Microsoft Azure DevOps Authentication Library for Windows")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Microsoft Corporation")]
[assembly: AssemblyProduct("https://github.com/Microsoft/Git-Credential-Manager-for-Windows")]
@@ -19,6 +19,6 @@
// Only expose internals when the binary isn't signed.
#if !SIGNED
-[assembly: InternalsVisibleTo("VisualStudioTeamServices.Authentication.Proxy")]
-[assembly: InternalsVisibleTo("VisualStudioTeamServices.Authentication.Test")]
+[assembly: InternalsVisibleTo("AzureDevOps.Authentication.Proxy")]
+[assembly: InternalsVisibleTo("AzureDevOps.Authentication.Test")]
#endif
diff --git a/VisualStudioTeamServices.Authentication/Src/TokenRegistry.cs b/AzureDevOps.Authentication/Src/TokenRegistry.cs
similarity index 99%
rename from VisualStudioTeamServices.Authentication/Src/TokenRegistry.cs
rename to AzureDevOps.Authentication/Src/TokenRegistry.cs
index ace7c86bc..f797b6d4c 100644
--- a/VisualStudioTeamServices.Authentication/Src/TokenRegistry.cs
+++ b/AzureDevOps.Authentication/Src/TokenRegistry.cs
@@ -31,7 +31,7 @@
using Microsoft.Alm.Authentication;
using Microsoft.Win32;
-namespace VisualStudioTeamServices.Authentication
+namespace AzureDevOps.Authentication
{
///
/// A token storage object which interacts with the current user's Visual Studio 2015 hive in the Windows Registry.
diff --git a/VisualStudioTeamServices.Authentication/Src/TokenScope.cs b/AzureDevOps.Authentication/Src/TokenScope.cs
similarity index 98%
rename from VisualStudioTeamServices.Authentication/Src/TokenScope.cs
rename to AzureDevOps.Authentication/Src/TokenScope.cs
index 4de00cc54..2f972883b 100644
--- a/VisualStudioTeamServices.Authentication/Src/TokenScope.cs
+++ b/AzureDevOps.Authentication/Src/TokenScope.cs
@@ -29,7 +29,7 @@
using System.Runtime.CompilerServices;
using ScopeSet = System.Collections.Generic.HashSet;
-namespace VisualStudioTeamServices.Authentication
+namespace AzureDevOps.Authentication
{
public class TokenScope : Microsoft.Alm.Authentication.TokenScope
{
@@ -217,11 +217,11 @@ public override bool Equals(object obj)
public bool Equals(TokenScope other)
=> Microsoft.Alm.Authentication.TokenScope.Equals(this as Microsoft.Alm.Authentication.TokenScope, other as Microsoft.Alm.Authentication.TokenScope);
- public static bool Find(string value, out TokenScope vstsScope)
+ public static bool Find(string value, out TokenScope devopsScope)
{
- vstsScope = EnumerateValues().FirstOrDefault(v => StringComparer.OrdinalIgnoreCase.Equals(v.Value, value));
+ devopsScope = EnumerateValues().FirstOrDefault(v => StringComparer.OrdinalIgnoreCase.Equals(v.Value, value));
- return vstsScope != null;
+ return devopsScope != null;
}
public override int GetHashCode()
diff --git a/VisualStudioTeamServices.Authentication/Src/packages.config b/AzureDevOps.Authentication/Src/packages.config
similarity index 100%
rename from VisualStudioTeamServices.Authentication/Src/packages.config
rename to AzureDevOps.Authentication/Src/packages.config
diff --git a/VisualStudioTeamServices.Authentication/Test/AadTests.cs b/AzureDevOps.Authentication/Test/AadTests.cs
similarity index 83%
rename from VisualStudioTeamServices.Authentication/Test/AadTests.cs
rename to AzureDevOps.Authentication/Test/AadTests.cs
index 999124ac9..624b6c299 100644
--- a/VisualStudioTeamServices.Authentication/Test/AadTests.cs
+++ b/AzureDevOps.Authentication/Test/AadTests.cs
@@ -27,7 +27,7 @@
using Microsoft.Alm.Authentication;
using Xunit;
-namespace VisualStudioTeamServices.Authentication.Test
+namespace AzureDevOps.Authentication.Test
{
public class AadTests : AuthenticationTests
{
@@ -39,7 +39,7 @@ public AadTests()
public async Task VstsAadDeleteCredentialsTest()
{
TargetUri targetUri = DefaultTargetUri;
- AadAuthentication aadAuthentication = GetVstsAadAuthentication(RuntimeContext.Default, "aad-delete");
+ AadAuthentication aadAuthentication = GetDevOpsAadAuthentication(RuntimeContext.Default, "aad-delete");
if (aadAuthentication.Authority is AuthorityFake fake)
{
@@ -59,7 +59,7 @@ public async Task VstsAadDeleteCredentialsTest()
public async Task VstsAadGetCredentialsTest()
{
TargetUri targetUri = DefaultTargetUri;
- AadAuthentication aadAuthentication = GetVstsAadAuthentication(RuntimeContext.Default, "aad-get");
+ AadAuthentication aadAuthentication = GetDevOpsAadAuthentication(RuntimeContext.Default, "aad-get");
Assert.Null(await aadAuthentication.GetCredentials(targetUri));
@@ -72,7 +72,7 @@ public async Task VstsAadGetCredentialsTest()
public async Task VstsAadInteractiveLogonTest()
{
TargetUri targetUri = DefaultTargetUri;
- AadAuthentication aadAuthentication = GetVstsAadAuthentication(RuntimeContext.Default, "aad-logon");
+ AadAuthentication aadAuthentication = GetDevOpsAadAuthentication(RuntimeContext.Default, "aad-logon");
Assert.Null(await aadAuthentication.PersonalAccessTokenStore.ReadCredentials(targetUri));
@@ -85,7 +85,7 @@ public async Task VstsAadInteractiveLogonTest()
public async Task VstsAadNoninteractiveLogonTest()
{
TargetUri targetUri = DefaultTargetUri;
- AadAuthentication aadAuthentication = GetVstsAadAuthentication(RuntimeContext.Default, "aad-noninteractive");
+ AadAuthentication aadAuthentication = GetDevOpsAadAuthentication(RuntimeContext.Default, "aad-noninteractive");
Assert.NotNull(await aadAuthentication.NoninteractiveLogon(targetUri, new PersonalAccessTokenOptions { RequireCompactToken = false }));
@@ -96,7 +96,7 @@ public async Task VstsAadNoninteractiveLogonTest()
public async Task VstsAadSetCredentialsTest()
{
TargetUri targetUri = DefaultTargetUri;
- AadAuthentication aadAuthentication = GetVstsAadAuthentication(RuntimeContext.Default, "aad-set");
+ AadAuthentication aadAuthentication = GetDevOpsAadAuthentication(RuntimeContext.Default, "aad-set");
Credential credentials = DefaultCredentials;
await aadAuthentication.SetCredentials(targetUri, credentials);
@@ -108,7 +108,7 @@ public async Task VstsAadSetCredentialsTest()
[Fact]
public async Task VstsAadValidateCredentialsTest()
{
- AadAuthentication aadAuthentication = GetVstsAadAuthentication(RuntimeContext.Default, "aad-validate");
+ AadAuthentication aadAuthentication = GetDevOpsAadAuthentication(RuntimeContext.Default, "aad-validate");
Credential credentials = null;
Assert.False(await aadAuthentication.ValidateCredentials(DefaultTargetUri, credentials), "Credential validation unexpectedly failed.");
@@ -118,14 +118,14 @@ public async Task VstsAadValidateCredentialsTest()
Assert.True(await aadAuthentication.ValidateCredentials(DefaultTargetUri, credentials), "Credential validation unexpectedly failed.");
}
- private static AadAuthentication GetVstsAadAuthentication(RuntimeContext context, string @namespace)
+ private static AadAuthentication GetDevOpsAadAuthentication(RuntimeContext context, string @namespace)
{
string expectedQueryParameters = null;
ICredentialStore tokenStore1 = new SecretCache(context, @namespace + 1, Secret.UriToIdentityUrl);
ITokenStore tokenStore2 = new SecretCache(context, @namespace + 2, Secret.UriToIdentityUrl);
- IAuthority vstsAuthority = new AuthorityFake(expectedQueryParameters);
- return new AadAuthentication(context, tokenStore1, tokenStore2, vstsAuthority);
+ IAuthority devopsAuthority = new AuthorityFake(expectedQueryParameters);
+ return new AadAuthentication(context, tokenStore1, tokenStore2, devopsAuthority);
}
}
}
diff --git a/VisualStudioTeamServices.Authentication/Test/AuthenticationTests.cs b/AzureDevOps.Authentication/Test/AuthenticationTests.cs
similarity index 98%
rename from VisualStudioTeamServices.Authentication/Test/AuthenticationTests.cs
rename to AzureDevOps.Authentication/Test/AuthenticationTests.cs
index 5209bb8ef..5b1d176dc 100644
--- a/VisualStudioTeamServices.Authentication/Test/AuthenticationTests.cs
+++ b/AzureDevOps.Authentication/Test/AuthenticationTests.cs
@@ -26,7 +26,7 @@
using System.Diagnostics;
using Microsoft.Alm.Authentication;
-namespace VisualStudioTeamServices.Authentication.Test
+namespace AzureDevOps.Authentication.Test
{
public abstract class AuthenticationTests
{
diff --git a/VisualStudioTeamServices.Authentication/Test/AuthorityFake.cs b/AzureDevOps.Authentication/Test/AuthorityFake.cs
similarity index 92%
rename from VisualStudioTeamServices.Authentication/Test/AuthorityFake.cs
rename to AzureDevOps.Authentication/Test/AuthorityFake.cs
index 1d3627aa4..c4418e4e1 100644
--- a/VisualStudioTeamServices.Authentication/Test/AuthorityFake.cs
+++ b/AzureDevOps.Authentication/Test/AuthorityFake.cs
@@ -28,7 +28,7 @@
using Microsoft.Alm.Authentication;
using Xunit;
-namespace VisualStudioTeamServices.Authentication.Test
+namespace AzureDevOps.Authentication.Test
{
internal class AuthorityFake : IAuthority
{
@@ -44,7 +44,7 @@ public AuthorityFake(string expectedQueryParameters)
public bool CredentialsAreValid { get; set; }
///
- /// Generates a personal access token for use with Visual Studio Team Services.
+ /// Generates a personal access token for use with Azure DevOps.
///
/// Returns the acquired token if successful; otherwise ;
///
@@ -63,7 +63,7 @@ public async Task GeneratePersonalAccessToken(TargetUri targetUri, Token
}
///
- /// Generates a personal access token for use with Visual Studio Team Services.
+ /// Generates a personal access token for use with Azure DevOps.
///
/// Returns the acquired token if successful; otherwise ;
///
@@ -106,12 +106,12 @@ public async Task NoninteractiveAcquireToken(TargetUri targetUri, string
}
///
- /// Validates that a `` is valid to grant access to the VSTS resource referenced by ``.
+ /// Validates that a `` is valid to grant access to the Azure DevOps resource referenced by ``.
///
/// Returns `` if successful; otherwise ``.
///
- /// URI of the VSTS resource.
- /// `` expected to grant access to the VSTS service.
+ /// URI of the Azure DevOps resource.
+ /// `` expected to grant access to the Azure DevOps service.
public async Task ValidateCredentials(TargetUri targetUri, Credential credentials)
{
return await Task.Run(() =>
@@ -129,12 +129,12 @@ public async Task ValidateCredentials(TargetUri targetUri, Credential cred
}
///
- /// Validates that a `` is valid to grant access to the VSTS resource referenced by ``.
+ /// Validates that a `` is valid to grant access to the Azure DevOps resource referenced by ``.
///
/// Returns `` if successful; otherwise ``.
///
- /// URI of the VSTS resource.
- /// `` expected to grant access to the VSTS resource.
+ /// URI of the Azure DevOps resource.
+ /// `` expected to grant access to the Azure DevOps resource.
public async Task ValidateToken(TargetUri targetUri, Token token)
{
return await Task.Run(() =>
diff --git a/VisualStudioTeamServices.Authentication/Test/AuthorityTests.cs b/AzureDevOps.Authentication/Test/AuthorityTests.cs
similarity index 99%
rename from VisualStudioTeamServices.Authentication/Test/AuthorityTests.cs
rename to AzureDevOps.Authentication/Test/AuthorityTests.cs
index 65fd0240a..f8cb3c216 100644
--- a/VisualStudioTeamServices.Authentication/Test/AuthorityTests.cs
+++ b/AzureDevOps.Authentication/Test/AuthorityTests.cs
@@ -30,7 +30,7 @@
using Microsoft.Alm.Authentication.Test;
using Xunit;
-namespace VisualStudioTeamServices.Authentication.Test
+namespace AzureDevOps.Authentication.Test
{
public class AuthorityTests : UnitTestBase
{
diff --git a/VisualStudioTeamServices.Authentication/Test/VisualStudioTeamServices.Authentication.Test.csproj b/AzureDevOps.Authentication/Test/AzureDevOps.Authentication.Test.csproj
similarity index 93%
rename from VisualStudioTeamServices.Authentication/Test/VisualStudioTeamServices.Authentication.Test.csproj
rename to AzureDevOps.Authentication/Test/AzureDevOps.Authentication.Test.csproj
index e58db2824..9d26c7c27 100644
--- a/VisualStudioTeamServices.Authentication/Test/VisualStudioTeamServices.Authentication.Test.csproj
+++ b/AzureDevOps.Authentication/Test/AzureDevOps.Authentication.Test.csproj
@@ -4,13 +4,13 @@
- VisualStudioTeamServices.Authentication.Test
+ AzureDevOps.Authentication.Test
Properties
False
{19781214-5254-464A-BC69-FAC502046564}
- VisualStudioTeamServices.Authentication.Test
+ AzureDevOps.Authentication.Test
@@ -54,13 +54,13 @@
{19781214-371f-415c-93c5-44ceaa0e9a34}
Microsoft.Alm.Authentication.Test
-
+
{04151231-4fa4-49b2-ae6d-ebdba36b1169}
- VisualStudioTeamServices.Authentication.Proxy
+ AzureDevOps.Authentication.Proxy
-
+
{19770407-d7d8-4a37-914c-f552ff4b90d4}
- VisualStudioTeamServices.Authentication
+ AzureDevOps.Authentication
diff --git a/VisualStudioTeamServices.Authentication/Test/Data/AuthorityTests_ValidateCredentials_Failed.json b/AzureDevOps.Authentication/Test/Data/AuthorityTests_ValidateCredentials_Failed.json
similarity index 100%
rename from VisualStudioTeamServices.Authentication/Test/Data/AuthorityTests_ValidateCredentials_Failed.json
rename to AzureDevOps.Authentication/Test/Data/AuthorityTests_ValidateCredentials_Failed.json
diff --git a/VisualStudioTeamServices.Authentication/Test/Data/AuthorityTests_ValidateCredentials_Null.json b/AzureDevOps.Authentication/Test/Data/AuthorityTests_ValidateCredentials_Null.json
similarity index 100%
rename from VisualStudioTeamServices.Authentication/Test/Data/AuthorityTests_ValidateCredentials_Null.json
rename to AzureDevOps.Authentication/Test/Data/AuthorityTests_ValidateCredentials_Null.json
diff --git a/VisualStudioTeamServices.Authentication/Test/Data/AuthorityTests_ValidateCredentials_Success.json b/AzureDevOps.Authentication/Test/Data/AuthorityTests_ValidateCredentials_Success.json
similarity index 100%
rename from VisualStudioTeamServices.Authentication/Test/Data/AuthorityTests_ValidateCredentials_Success.json
rename to AzureDevOps.Authentication/Test/Data/AuthorityTests_ValidateCredentials_Success.json
diff --git a/VisualStudioTeamServices.Authentication/Test/Data/AuthorityTests_ValidateToken_Access_Failed.json b/AzureDevOps.Authentication/Test/Data/AuthorityTests_ValidateToken_Access_Failed.json
similarity index 100%
rename from VisualStudioTeamServices.Authentication/Test/Data/AuthorityTests_ValidateToken_Access_Failed.json
rename to AzureDevOps.Authentication/Test/Data/AuthorityTests_ValidateToken_Access_Failed.json
diff --git a/VisualStudioTeamServices.Authentication/Test/Data/AuthorityTests_ValidateToken_Federated_Failed.json b/AzureDevOps.Authentication/Test/Data/AuthorityTests_ValidateToken_Federated_Failed.json
similarity index 100%
rename from VisualStudioTeamServices.Authentication/Test/Data/AuthorityTests_ValidateToken_Federated_Failed.json
rename to AzureDevOps.Authentication/Test/Data/AuthorityTests_ValidateToken_Federated_Failed.json
diff --git a/VisualStudioTeamServices.Authentication/Test/Data/AuthorityTests_ValidateToken_Null.json b/AzureDevOps.Authentication/Test/Data/AuthorityTests_ValidateToken_Null.json
similarity index 100%
rename from VisualStudioTeamServices.Authentication/Test/Data/AuthorityTests_ValidateToken_Null.json
rename to AzureDevOps.Authentication/Test/Data/AuthorityTests_ValidateToken_Null.json
diff --git a/VisualStudioTeamServices.Authentication/Test/Data/AuthorityTests_ValidateToken_Success.json b/AzureDevOps.Authentication/Test/Data/AuthorityTests_ValidateToken_Success.json
similarity index 100%
rename from VisualStudioTeamServices.Authentication/Test/Data/AuthorityTests_ValidateToken_Success.json
rename to AzureDevOps.Authentication/Test/Data/AuthorityTests_ValidateToken_Success.json
diff --git a/VisualStudioTeamServices.Authentication/Test/MsaTests.cs b/AzureDevOps.Authentication/Test/MsaTests.cs
similarity index 79%
rename from VisualStudioTeamServices.Authentication/Test/MsaTests.cs
rename to AzureDevOps.Authentication/Test/MsaTests.cs
index d00ba340f..54174f683 100644
--- a/VisualStudioTeamServices.Authentication/Test/MsaTests.cs
+++ b/AzureDevOps.Authentication/Test/MsaTests.cs
@@ -27,7 +27,7 @@
using Microsoft.Alm.Authentication;
using Xunit;
-namespace VisualStudioTeamServices.Authentication.Test
+namespace AzureDevOps.Authentication.Test
{
public class MsaTests : AuthenticationTests
{
@@ -36,10 +36,10 @@ public MsaTests()
{ }
[Fact]
- public async Task VstsMsaDeleteCredentialsTest()
+ public async Task DevOpsMsaDeleteCredentialsTest()
{
TargetUri targetUri = DefaultTargetUri;
- MsaAuthentication msaAuthority = GetVstsMsaAuthentication(RuntimeContext.Default, "msa-delete");
+ MsaAuthentication msaAuthority = GetDevOpsMsaAuthentication(RuntimeContext.Default, "msa-delete");
if (msaAuthority.Authority is AuthorityFake fake)
{
@@ -56,10 +56,10 @@ public async Task VstsMsaDeleteCredentialsTest()
}
[Fact]
- public async Task VstsMsaGetCredentialsTest()
+ public async Task DevOpsMsaGetCredentialsTest()
{
TargetUri targetUri = DefaultTargetUri;
- MsaAuthentication msaAuthority = GetVstsMsaAuthentication(RuntimeContext.Default, "msa-get");
+ MsaAuthentication msaAuthority = GetDevOpsMsaAuthentication(RuntimeContext.Default, "msa-get");
Assert.Null(await msaAuthority.GetCredentials(targetUri));
@@ -69,10 +69,10 @@ public async Task VstsMsaGetCredentialsTest()
}
[Fact]
- public async Task VstsMsaInteractiveLogonTest()
+ public async Task DevOpsMsaInteractiveLogonTest()
{
TargetUri targetUri = DefaultTargetUri;
- MsaAuthentication msaAuthority = GetVstsMsaAuthentication(RuntimeContext.Default, "msa-logon");
+ MsaAuthentication msaAuthority = GetDevOpsMsaAuthentication(RuntimeContext.Default, "msa-logon");
Assert.Null(await msaAuthority.PersonalAccessTokenStore.ReadCredentials(targetUri));
@@ -82,10 +82,10 @@ public async Task VstsMsaInteractiveLogonTest()
}
[Fact]
- public async Task VstsMsaSetCredentialsTest()
+ public async Task DevOpsMsaSetCredentialsTest()
{
TargetUri targetUri = DefaultTargetUri;
- MsaAuthentication msaAuthority = GetVstsMsaAuthentication(RuntimeContext.Default, "msa-set");
+ MsaAuthentication msaAuthority = GetDevOpsMsaAuthentication(RuntimeContext.Default, "msa-set");
await msaAuthority.SetCredentials(targetUri, DefaultCredentials);
@@ -93,9 +93,9 @@ public async Task VstsMsaSetCredentialsTest()
}
[Fact]
- public async Task VstsMsaValidateCredentialsTest()
+ public async Task DevOpsMsaValidateCredentialsTest()
{
- MsaAuthentication msaAuthority = GetVstsMsaAuthentication(RuntimeContext.Default, "msa-validate");
+ MsaAuthentication msaAuthority = GetDevOpsMsaAuthentication(RuntimeContext.Default, "msa-validate");
Credential credentials = null;
Assert.False( await msaAuthority.ValidateCredentials(DefaultTargetUri, credentials), "Credential validation unexpectedly failed.");
@@ -105,7 +105,7 @@ public async Task VstsMsaValidateCredentialsTest()
Assert.True(await msaAuthority.ValidateCredentials(DefaultTargetUri, credentials), "Credential validation unexpectedly failed.");
}
- private static MsaAuthentication GetVstsMsaAuthentication(RuntimeContext context, string @namespace)
+ private static MsaAuthentication GetDevOpsMsaAuthentication(RuntimeContext context, string @namespace)
{
ICredentialStore tokenStore1 = new SecretCache(context, @namespace + 1, Secret.UriToIdentityUrl);
ITokenStore tokenStore2 = new SecretCache(context, @namespace + 2, Secret.UriToIdentityUrl);
diff --git a/VisualStudioTeamServices.Authentication/Test/Properties/AssemblyInfo.cs b/AzureDevOps.Authentication/Test/Properties/AssemblyInfo.cs
similarity index 89%
rename from VisualStudioTeamServices.Authentication/Test/Properties/AssemblyInfo.cs
rename to AzureDevOps.Authentication/Test/Properties/AssemblyInfo.cs
index 62d6280c7..b1b0283fb 100644
--- a/VisualStudioTeamServices.Authentication/Test/Properties/AssemblyInfo.cs
+++ b/AzureDevOps.Authentication/Test/Properties/AssemblyInfo.cs
@@ -3,11 +3,11 @@
// General Information about an assembly is controlled through the following set of attributes.
// Change these attribute values to modify the information associated with an assembly.
-[assembly: AssemblyTitle("VisualStudioTeamServices.Authentication.Test")]
+[assembly: AssemblyTitle("AzureDevOps.Authentication.Test")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Microsoft Corporation")]
-[assembly: AssemblyProduct("VisualStudioTeamServices.Authentication.Test")]
+[assembly: AssemblyProduct("AzureDevOps.Authentication.Test")]
[assembly: AssemblyCopyright("Copyright © Microsoft Corporation 2018. All rights reserved.")]
[assembly: AssemblyTrademark("Microsoft Corporation")]
[assembly: AssemblyCulture("")]
diff --git a/VisualStudioTeamServices.Authentication/Test/TokenScopeTests.cs b/AzureDevOps.Authentication/Test/TokenScopeTests.cs
similarity index 99%
rename from VisualStudioTeamServices.Authentication/Test/TokenScopeTests.cs
rename to AzureDevOps.Authentication/Test/TokenScopeTests.cs
index 346a9acfe..b798e148d 100644
--- a/VisualStudioTeamServices.Authentication/Test/TokenScopeTests.cs
+++ b/AzureDevOps.Authentication/Test/TokenScopeTests.cs
@@ -26,7 +26,7 @@
using System.Collections.Generic;
using Xunit;
-namespace VisualStudioTeamServices.Authentication.Test
+namespace AzureDevOps.Authentication.Test
{
public class TokenScopeTests
{
diff --git a/VisualStudioTeamServices.Authentication/Test/app.config b/AzureDevOps.Authentication/Test/app.config
similarity index 100%
rename from VisualStudioTeamServices.Authentication/Test/app.config
rename to AzureDevOps.Authentication/Test/app.config
diff --git a/VisualStudioTeamServices.Authentication/Test/packages.config b/AzureDevOps.Authentication/Test/packages.config
similarity index 100%
rename from VisualStudioTeamServices.Authentication/Test/packages.config
rename to AzureDevOps.Authentication/Test/packages.config
diff --git a/Cli/Askpass/Cli-Askpass.csproj b/Cli/Askpass/Cli-Askpass.csproj
index feb2353f3..00f4d33bb 100644
--- a/Cli/Askpass/Cli-Askpass.csproj
+++ b/Cli/Askpass/Cli-Askpass.csproj
@@ -6,7 +6,7 @@
Properties
git-askpass
true
-
+
Exe
{19770407-B33A-4EBE-92B8-04C93F43CAE0}
Cli-Askpass
@@ -49,9 +49,9 @@
{19770407-b493-459d-bb4f-04fbefb1ba13}
Microsoft.Alm.Authentication
-
+
{19770407-d7d8-4a37-914c-f552ff4b90d4}
- VisualStudioTeamServices.Authentication
+ AzureDevops.Authentication
@@ -65,8 +65,8 @@
-
-
+
+
diff --git a/Cli/Manager/Cli-Manager.csproj b/Cli/Manager/Cli-Manager.csproj
index 682500b01..944e771d7 100644
--- a/Cli/Manager/Cli-Manager.csproj
+++ b/Cli/Manager/Cli-Manager.csproj
@@ -6,7 +6,7 @@
Properties
git-credential-manager
true
-
+
Exe
{19770407-63D4-40A8-A9DF-F1C4B473308A}
Cli-Manager
@@ -42,9 +42,9 @@
{19770407-b493-459d-bb4f-04fbefb1ba13}
Microsoft.Alm.Authentication
-
+
{19770407-d7d8-4a37-914c-f552ff4b90d4}
- VisualStudioTeamServices.Authentication
+ AzureDevops.Authentication
diff --git a/Cli/Manager/Installer.cs b/Cli/Manager/Installer.cs
index a1100a093..36c0fcb93 100644
--- a/Cli/Manager/Installer.cs
+++ b/Cli/Manager/Installer.cs
@@ -45,16 +45,17 @@ internal class Installer
private static readonly IReadOnlyList CopyList = new string[]
{
+ "AzureDevOps.Authentication.dll",
"Bitbucket.Authentication.dll",
"git-askpass.exe",
"git-credential-manager.exe",
"GitHub.Authentication.exe",
"Microsoft.Alm.Authentication.dll",
"Microsoft.IdentityModel.Clients.ActiveDirectory.dll",
- "VisualStudioTeamServices.Authentication.dll",
};
private static readonly IReadOnlyList CleanList = new string[]
{
+ "AzureDevOps.Authentication.dll",
"Bitbucket.Authentication.dll",
"git-askpass.exe",
"git-credential-manager.exe",
diff --git a/Cli/Manager/Program.cs b/Cli/Manager/Program.cs
index a8ae550f9..8b99d8574 100644
--- a/Cli/Manager/Program.cs
+++ b/Cli/Manager/Program.cs
@@ -239,7 +239,7 @@ internal void Config()
WriteLine($" UseHttpPath = {operationArguments.UseHttpPath}");
WriteLine($" UseModalUi = {operationArguments.UseModalUi}");
WriteLine($" ValidateCredentials = {operationArguments.ValidateCredentials}");
- WriteLine($" VstsTokenScope = {operationArguments.VstsTokenScope}");
+ WriteLine($" DevOpsTokenScope = {operationArguments.DevOpsTokenScope}");
WriteLine($" WriteLog = {operationArguments.WriteLog}");
}).Wait();
}
@@ -295,7 +295,7 @@ internal void Delete()
case AuthorityType.AzureDirectory:
case AuthorityType.MicrosoftAccount:
- _context.Trace.WriteLine($"deleting VSTS credentials for '{operationArguments.TargetUri}'.");
+ _context.Trace.WriteLine($"deleting Azure DevOps credentials for '{operationArguments.TargetUri}'.");
break;
case AuthorityType.GitHub:
@@ -519,7 +519,7 @@ internal void Store()
case AuthorityType.AzureDirectory:
case AuthorityType.MicrosoftAccount:
- Trace.WriteLine($"storing VSTS credentials for '{operationArguments.TargetUri}'.");
+ Trace.WriteLine($"storing Azure DevOps credentials for '{operationArguments.TargetUri}'.");
break;
case AuthorityType.GitHub:
diff --git a/Cli/Test/VstsLogonTests.cs b/Cli/Test/AzureDevOpsLogonTests.cs
similarity index 99%
rename from Cli/Test/VstsLogonTests.cs
rename to Cli/Test/AzureDevOpsLogonTests.cs
index 595f4ae7c..a1b161690 100644
--- a/Cli/Test/VstsLogonTests.cs
+++ b/Cli/Test/AzureDevOpsLogonTests.cs
@@ -31,11 +31,11 @@
namespace Microsoft.Alm.Cli.Test
{
- public class VstsLogonTests : VisualStudioTeamServices.Authentication.Test.UnitTestBase
+ public class AzureDevOpsLogonTests : AzureDevOps.Authentication.Test.UnitTestBase
{
private static readonly Encoding Utf8 = new UTF8Encoding(encoderShouldEmitUTF8Identifier: false);
- public VstsLogonTests(Xunit.Abstractions.ITestOutputHelper output)
+ public AzureDevOpsLogonTests(Xunit.Abstractions.ITestOutputHelper output)
: base(XunitHelper.Convert(output))
{ }
diff --git a/Cli/Test/Cli-Test.csproj b/Cli/Test/Cli-Test.csproj
index ce7422650..cc6a95490 100644
--- a/Cli/Test/Cli-Test.csproj
+++ b/Cli/Test/Cli-Test.csproj
@@ -57,9 +57,9 @@
{19781214-fe04-4a05-943a-54eb952cea62}
Microsoft.Alm.Authentication.Proxy
-
- {19781214-4fa4-49b2-ae6d-ebdba36b1169}
- VisualStudioTeamServices.Authentication.Proxy
+
+ {04151231-4FA4-49B2-AE6D-EBDBA36B1169}
+ AzureDevops.Authentication.Proxy
{19770407-63d4-40a8-a9df-f1c4b473308a}
@@ -69,9 +69,9 @@
{19770407-b493-459d-bb4f-04fbefb1ba13}
Microsoft.Alm.Authentication
-
+
{19770407-d7d8-4a37-914c-f552ff4b90d4}
- VisualStudioTeamServices.Authentication
+ AzureDevops.Authentication
@@ -83,7 +83,7 @@
-
+
diff --git a/Cli/Test/Data/VstsLogonTests_InteractiveAadLogonWithRevokedCredentials_Success.json b/Cli/Test/Data/AzureDevOpsLogonTests_InteractiveAadLogonWithRevokedCredentials_Success.json
similarity index 100%
rename from Cli/Test/Data/VstsLogonTests_InteractiveAadLogonWithRevokedCredentials_Success.json
rename to Cli/Test/Data/AzureDevOpsLogonTests_InteractiveAadLogonWithRevokedCredentials_Success.json
diff --git a/Cli/Test/Data/VstsLogonTests_InteractiveAadLogon_Canceled.json b/Cli/Test/Data/AzureDevOpsLogonTests_InteractiveAadLogon_Canceled.json
similarity index 100%
rename from Cli/Test/Data/VstsLogonTests_InteractiveAadLogon_Canceled.json
rename to Cli/Test/Data/AzureDevOpsLogonTests_InteractiveAadLogon_Canceled.json
diff --git a/Cli/Test/Data/VstsLogonTests_InteractiveAadLogon_Success.json b/Cli/Test/Data/AzureDevOpsLogonTests_InteractiveAadLogon_Success.json
similarity index 100%
rename from Cli/Test/Data/VstsLogonTests_InteractiveAadLogon_Success.json
rename to Cli/Test/Data/AzureDevOpsLogonTests_InteractiveAadLogon_Success.json
diff --git a/Cli/Test/Data/VstsLogonTests_InteractiveMsaLogonWithRevokedCredentials_Success.json b/Cli/Test/Data/AzureDevOpsLogonTests_InteractiveMsaLogonWithRevokedCredentials_Success.json
similarity index 100%
rename from Cli/Test/Data/VstsLogonTests_InteractiveMsaLogonWithRevokedCredentials_Success.json
rename to Cli/Test/Data/AzureDevOpsLogonTests_InteractiveMsaLogonWithRevokedCredentials_Success.json
diff --git a/Cli/Test/Data/VstsLogonTests_InteractiveMsaLogon_Canceled.json b/Cli/Test/Data/AzureDevOpsLogonTests_InteractiveMsaLogon_Canceled.json
similarity index 100%
rename from Cli/Test/Data/VstsLogonTests_InteractiveMsaLogon_Canceled.json
rename to Cli/Test/Data/AzureDevOpsLogonTests_InteractiveMsaLogon_Canceled.json
diff --git a/Cli/Test/Data/VstsLogonTests_InteractiveMsaLogon_Success.json b/Cli/Test/Data/AzureDevOpsLogonTests_InteractiveMsaLogon_Success.json
similarity index 100%
rename from Cli/Test/Data/VstsLogonTests_InteractiveMsaLogon_Success.json
rename to Cli/Test/Data/AzureDevOpsLogonTests_InteractiveMsaLogon_Success.json
diff --git a/Cli/Test/Data/VstsLogonTests_NoninteractiveAadLogon_Success.json b/Cli/Test/Data/AzureDevOpsLogonTests_NoninteractiveAadLogon_Success.json
similarity index 100%
rename from Cli/Test/Data/VstsLogonTests_NoninteractiveAadLogon_Success.json
rename to Cli/Test/Data/AzureDevOpsLogonTests_NoninteractiveAadLogon_Success.json
diff --git a/Cli/Test/Data/VstsLogonTests_NoninteractiveAadWithRevokedCredentials_Success.json b/Cli/Test/Data/AzureDevOpsLogonTests_NoninteractiveAadWithRevokedCredentials_Success.json
similarity index 100%
rename from Cli/Test/Data/VstsLogonTests_NoninteractiveAadWithRevokedCredentials_Success.json
rename to Cli/Test/Data/AzureDevOpsLogonTests_NoninteractiveAadWithRevokedCredentials_Success.json
diff --git a/Cli/Test/ProgramTests.cs b/Cli/Test/ProgramTests.cs
index 18beda397..d76616ef6 100644
--- a/Cli/Test/ProgramTests.cs
+++ b/Cli/Test/ProgramTests.cs
@@ -29,9 +29,8 @@
using Microsoft.Alm.Authentication;
using Moq;
using Xunit;
-
+using Azure = AzureDevOps.Authentication;
using Git = Microsoft.Alm.Authentication.Git;
-using Vsts = VisualStudioTeamServices.Authentication;
namespace Microsoft.Alm.Cli.Test
{
@@ -97,7 +96,7 @@ public async Task LoadOperationArgumentsTest()
.Returns(targetUri);
opargsMock.SetupProperty(o => o.UseHttpPath);
opargsMock.SetupProperty(o => o.ValidateCredentials);
- opargsMock.SetupProperty(o => o.VstsTokenScope);
+ opargsMock.SetupProperty(o => o.DevOpsTokenScope);
var opargs = opargsMock.Object;
@@ -107,10 +106,10 @@ public async Task LoadOperationArgumentsTest()
Assert.True(opargs.ValidateCredentials, "credential.validate");
Assert.True(opargs.UseHttpPath, "credential.useHttpPath");
- Assert.NotNull(opargs.VstsTokenScope);
+ Assert.NotNull(opargs.DevOpsTokenScope);
- var expectedScope = Vsts.TokenScope.BuildAccess | Vsts.TokenScope.CodeWrite;
- Assert.Equal(expectedScope, opargs.VstsTokenScope);
+ var expectedScope = Azure.TokenScope.BuildAccess | Azure.TokenScope.CodeWrite;
+ Assert.Equal(expectedScope, opargs.DevOpsTokenScope);
}
public static object[][] TryReadBooleanData
diff --git a/Docs/Askpass.md b/Docs/Askpass.md
index ed507756b..62c575181 100644
--- a/Docs/Askpass.md
+++ b/Docs/Askpass.md
@@ -1,7 +1,7 @@
# Git Askpass for Windows
[Git Askpass for Windows](https://github.com/Microsoft/Git-Credential-Manager-for-Windows) (Askpass) provides secure Git credential storage for Windows.
-Askpass provides multi-factor authentication support for [Visual Studio Team Services](https://www.visualstudio.com/), [Team Foundation Server](https://www.visualstudio.com/en-us/products/tfs-overview-vs.aspx), and [GitHub](https://github.com/).
+Askpass provides multi-factor authentication support for [Azure DevOps](https://dev.azure.com/), [Team Foundation Server](https://www.visualstudio.com/en-us/products/tfs-overview-vs.aspx), and [GitHub](https://github.com/).
## Usage
diff --git a/Docs/Automation.md b/Docs/Automation.md
index 2daa6ee97..43041f8f2 100644
--- a/Docs/Automation.md
+++ b/Docs/Automation.md
@@ -5,12 +5,12 @@ While there is detailed documentation on [GCM configuration options](Configurati
_Note:_ SSH is often a better choice for automated system because requiring interactivity is a non-default option, and SSH is known to be secure and reliable.
-## Recommendations for VSTS Build Services
+## Recommendations for Azure DevOps Build Services
The majority of build definitions will work with a single repository, or at least a set of repositories which all have the same authentication requirements.
-In this case, it is generally better to rely on [VSTS Build Variables](https://docs.microsoft.com/en-us/vsts/build-release/concepts/definitions/build/variables?tabs=batch); specifically the `$(System.AccessToken)` build process OAuth token.
+In this case, it is generally better to rely on [Azure DevOps Build Variables](https://docs.microsoft.com/en-us/vsts/build-release/concepts/definitions/build/variables?tabs=batch); specifically the `$(System.AccessToken)` build process OAuth token.
To enable scripts to use the build process OAuth token, go to the Options tab of the build definition and select 'Allow Scripts to Access OAuth Token'.
-For more information, read [VSTS: Use the OAuth token to access the REST API](https://docs.microsoft.com/en-us/vsts/build-release/actions/scripts/powershell#oauth).
+For more information, read [Azure DevOps: Use the OAuth token to access the REST API](https://docs.microsoft.com/en-us/vsts/build-release/actions/scripts/powershell#oauth).
## Recommendations for Other Build Services
@@ -22,7 +22,7 @@ git config --global credential.interactive never
Build agents often need to minimize the amount of network traffic they generate.
-To avoid Microsoft Account vs. Azure Active Directory look-up against a Visual Studio Team Services \[VSTS\] account use...
+To avoid Microsoft Account vs. Azure Active Directory look-up against an Azure DevOps account use...
... for Azure Directory backed authentication:
diff --git a/Docs/Configuration.md b/Docs/Configuration.md
index c350f3c7a..dfcea155f 100644
--- a/Docs/Configuration.md
+++ b/Docs/Configuration.md
@@ -113,7 +113,7 @@ See [GCM_PRESERVE](Environment.md#gcm_preserve)
### tokenDuration
-Sets a duration, in hours, limit for the validity of Personal Access Tokens requested from Visual Studio Team Services [VSTS].
+Sets a duration, in hours, limit for the validity of Personal Access Tokens requested from Azure DevOps.
If the value is greater than the maximum duration set for the account, the account value supersedes.
The value cannot be less than a one hour (1).
@@ -169,10 +169,10 @@ See [GCM_VALIDATE](Environment.md#gcm_validate)
### vstsScope
-Overrides GCM default scope request when generating a Personal Access Token from Visual Studio Team Services [VSTS].
+Overrides GCM default scope request when generating a Personal Access Token from Azure DevOps.
The supported format is one or more [scope values](https://docs.microsoft.com/en-us/vsts/integrate/get-started/authentication/oauth#scopes) separated by whitespace, commas, semi-colons, or pipe `'|'` characters.
-Defaults to `vso.code_write|vso.packaging`; Honored when host is 'visualstudio.com'.
+Defaults to `vso.code_write|vso.packaging`; Honored when host is 'dev.azure.com'.
```shell
git config --global credential.microsoft.visualstudio.com.vstsScope vso.code_write|vso.packaging_write|vso.test_write
diff --git a/Docs/CredentialManager.md b/Docs/CredentialManager.md
index 736294eb0..0221b2a44 100644
--- a/Docs/CredentialManager.md
+++ b/Docs/CredentialManager.md
@@ -1,7 +1,7 @@
# Git Credential Manager for Windows
The [Git Credential Manager for Windows](https://github.com/Microsoft/Git-Credential-Manager-for-Windows) (GCM) provides secure Git credential storage for Windows.
-GCM provides multi-factor authentication support for [Visual Studio Team Services](https://www.visualstudio.com/), [Team Foundation Server](https://www.visualstudio.com/en-us/products/tfs-overview-vs.aspx), [GitHub](https://github.com/), and [BitBucket](https://bitbucket.org).
+GCM provides multi-factor authentication support for [Azure DevOps](https://dev.azure.com/), [Team Foundation Server](https://www.visualstudio.com/en-us/products/tfs-overview-vs.aspx), [GitHub](https://github.com/), and [BitBucket](https://bitbucket.org).
## Usage
diff --git a/Docs/Environment.md b/Docs/Environment.md
index 64694bfb6..30ecba8ea 100644
--- a/Docs/Environment.md
+++ b/Docs/Environment.md
@@ -97,7 +97,7 @@ See [credential.preserve](Configuration.md#preserve).
### GCM_TOKEN_DURATION
-Sets a duration, in hours, limit for the validity of Personal Access Tokens requested from Visual Studio Team Services [VSTS].
+Sets a duration, in hours, limit for the validity of Personal Access Tokens requested from Azure DevOps.
If the value is greater than the maximum duration set for the account, the account value supersedes. The value cannot be less than a one hour (1).
@@ -137,7 +137,7 @@ See [credential.validate](Configuration.md#validate).
### GCM_VSTS_SCOPE
-Overrides GCM default scope request when generating a Personal Access Token from Visual Studio Team Services [VSTS].
+Overrides GCM default scope request when generating a Personal Access Token from Azure DevOps.
The supported format is one or more [scope values](https://docs.microsoft.com/en-us/vsts/integrate/get-started/authentication/oauth#scopes) separated by whitespace, commas, semi-colons, or pipe characters (`' '`, `','`, `';'`, `'|'`).
Defaults to `vso.code_write|vso.packaging`; Honored when host is 'visualstudio.com'.
diff --git a/Docs/Faq.md b/Docs/Faq.md
index 4a20dd93c..b1404cf7d 100644
--- a/Docs/Faq.md
+++ b/Docs/Faq.md
@@ -39,7 +39,7 @@ If you're looking to extend the GCM, or need a way to authenticate with VSTS but
The Git Credential Manager does not work on Windows XP, Max OS, or Linux because we had to scope our work and we decided to support the same operating systems that Visual Studio support.
Why Visual Studio?
-Well, because it is our favorite IDE and in order to support [Visual Studio Team Services](https://www.visualstudio.com/en-us/products/visual-studio-team-services-vs.aspx) we had to use the [Azure Directory Authentication Libraries](https://github.com/AzureAD) which only have multi-factor interactive logon support in their .NET libraries.
+Well, because it is our favorite IDE and in order to support [Azure DevOps](https://www.visualstudio.com/en-us/products/visual-studio-team-services-vs.aspx) we had to use the [Azure Directory Authentication Libraries](https://github.com/AzureAD) which only have multi-factor interactive logon support in their .NET libraries.
Using .NET means using Visual Studio (which we love anyways) and using Visual Studio means Windows 7 or newer.
## Q: Will there ever be support for Windows XP, Mac OS, or Linux?
@@ -94,11 +94,11 @@ This works in v1.8.3.0 of SourceTree.
Check that you are using the HTTP(S) URL instead of the SSH URL for your repository.
You can do this by running `git remote show origin`.
The Fetch URL and Push URL should start with `https://` or `http://`.
-If this is not the case, look for the HTTP(S) URL in the web interface of VSTS, TFS, GitHub or Bitbucket, and then run `git remote set-url origin `, where `` is the HTTP(S) URL.
+If this is not the case, look for the HTTP(S) URL in the web interface of Azure DevOps, TFS, GitHub or Bitbucket, and then run `git remote set-url origin `, where `` is the HTTP(S) URL.
-## Q: Why is git.exe failing to authenticate after linking/unlinking your Visual Studio Team Services account from Azure Active Directory?
+## Q: Why is git.exe failing to authenticate after linking/unlinking your Azure DevOps account from Azure Active Directory?
-When the tenant backing the Visual Studio Team Services (VSTS) account changes like when you [Connect VSTS account to Azure Active Directory (Azure AD)](https://docs.microsoft.com/en-us/vsts/accounts/connect-account-to-aad), the tenant cache needs to be cleared if you're using a GCM version prior to v1.15.0.
+When the tenant backing the Azure DevOps account changes like when you [Connect VSTS account to Azure Active Directory (Azure AD)](https://docs.microsoft.com/en-us/vsts/accounts/connect-account-to-aad), the tenant cache needs to be cleared if you're using a GCM version prior to v1.15.0.
Clearing the tenant cache is as easy as deleting the *%LocalAppData%\GitCredentialManager\tenant.cache* file on each machine returning a login error like below.
The GCM will automatically recreate and populate the cache file as needed on subsequent login attempts.
diff --git a/Docs/Index.md b/Docs/Index.md
index dd7043c6f..bdde5416e 100644
--- a/Docs/Index.md
+++ b/Docs/Index.md
@@ -1,15 +1,15 @@
# Git Credential Manager for Windows
The [Git Credential Manager for Windows](https://github.com/Microsoft/Git-Credential-Manager-for-Windows) (GCM) provides secure Git credential storage for Windows.
-GCM provides multi-factor authentication support for [Visual Studio Team Services](https://www.visualstudio.com/), [Team Foundation Server](Faq.md#q-i-thought-microsoft-was-maintaining-this-why-does-the-gcm-not-work-as-expected-with-tfs), and [GitHub](https://github.com/).
+GCM provides multi-factor authentication support for [Azure DevOps](https://dev.azure.com/), [Team Foundation Server](Faq.md#q-i-thought-microsoft-was-maintaining-this-why-does-the-gcm-not-work-as-expected-with-tfs), and [GitHub](https://github.com/).
This project includes:
* Secure password storage in the Windows Credential Store
-* Multi-factor authentication support for Visual Studio Team Services
+* Multi-factor authentication support for Azure DevOps
* Two-factor authentication support for GitHub
-* Personal Access Token generation and usage support for Visual Studio Team Services and GitHub
-* Non-interactive mode support for Visual Studio Team Services backed by Azure Directory
+* Personal Access Token generation and usage support for Azure DevOps, GitHub, and Bitbucket
+* Non-interactive mode support for Azure DevOps backed by Azure Directory
* Kerberos authentication for Team Foundation Server ([see notes](#q-i-thought-microsoft-was-maintaining-this-why-does-the-gcm-not-work-as-expected-with-tfs))
* Optional settings for build agent optimization
@@ -28,7 +28,7 @@ GCM cannot prompt you for credentials, at the console, in a MinTTY setup.
You don't.
It [magically](https://github.com/Microsoft/Git-Credential-Manager-for-Windows/issues/31) works when credentials are needed.
-For example, when pushing to [Visual Studio Team Services](https://www.visualstudio.com), it automatically opens a window and initializes an oauth2 flow to get your token.
+For example, when pushing to [Azure DevOps](https://dev.azure.com), it automatically opens a window and initializes an oauth2 flow to get your token.
### Manual Installation
diff --git a/GcmParentWindowTest/MainWindow.xaml b/GcmParentWindowTest/MainWindow.xaml
index 57bfbb266..478e3230f 100644
--- a/GcmParentWindowTest/MainWindow.xaml
+++ b/GcmParentWindowTest/MainWindow.xaml
@@ -37,7 +37,7 @@
-
+
diff --git a/GitCredentialManager.sln b/GitCredentialManager.sln
index b10552075..fbd03fe82 100644
--- a/GitCredentialManager.sln
+++ b/GitCredentialManager.sln
@@ -24,7 +24,7 @@ Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Microsoft.Alm.Win32", "Shar
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Alm.Authentication", "Microsoft.Alm.Authentication\Src\Microsoft.Alm.Authentication.csproj", "{19770407-B493-459D-BB4F-04FBEFB1BA13}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VisualStudioTeamServices.Authentication", "VisualStudioTeamServices.Authentication\Src\VisualStudioTeamServices.Authentication.csproj", "{19770407-D7D8-4A37-914C-F552FF4B90D4}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AzureDevOps.Authentication", "AzureDevOps.Authentication\Src\AzureDevOps.Authentication.csproj", "{19770407-D7D8-4A37-914C-F552FF4B90D4}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GitHub.Authentication", "GitHub.Authentication\Src\GitHub.Authentication.csproj", "{CF306116-BBF0-4CC7-AFCE-A506AC4752CB}"
EndProject
@@ -36,7 +36,7 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Cli-Askpass", "Cli\Askpass\
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Alm.Authentication.Test", "Microsoft.Alm.Authentication\Test\Microsoft.Alm.Authentication.Test.csproj", "{19781214-371F-415C-93C5-44CEAA0E9A34}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VisualStudioTeamServices.Authentication.Test", "VisualStudioTeamServices.Authentication\Test\VisualStudioTeamServices.Authentication.Test.csproj", "{19781214-5254-464A-BC69-FAC502046564}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AzureDevOps.Authentication.Test", "AzureDevOps.Authentication\Test\AzureDevOps.Authentication.Test.csproj", "{19781214-5254-464A-BC69-FAC502046564}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bitbucket.Authentication.Test", "Bitbucket.Authentication\Test\Bitbucket.Authentication.Test.csproj", "{AECD6D57-F900-4D43-A01A-4AA3C68F39C2}"
EndProject
@@ -48,7 +48,7 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GcmParentWindowTest", "GcmP
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Alm.Authentication.Proxy", "Microsoft.Alm.Authentication\Proxy\Microsoft.Alm.Authentication.Proxy.csproj", "{04151231-FE04-4A05-943A-54EB952CEA62}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VisualStudioTeamServices.Authentication.Proxy", "VisualStudioTeamServices.Authentication\Proxy\VisualStudioTeamServices.Authentication.Proxy.csproj", "{04151231-4FA4-49B2-AE6D-EBDBA36B1169}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AzureDevOps.Authentication.Proxy", "AzureDevOps.Authentication\Proxy\AzureDevOps.Authentication.Proxy.csproj", "{04151231-4FA4-49B2-AE6D-EBDBA36B1169}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GitHub.Authentication.Proxy", "GitHub.Authentication\Proxy\GitHub.Authentication.Proxy.csproj", "{04151231-4DF4-4312-8F35-72BAD788F741}"
EndProject
@@ -60,6 +60,10 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Build", "Build", "{FFD83274
build-docs.cmd = build-docs.cmd
build.props = build.props
build.targets = build.targets
+ devops-ci.yml = devops-ci.yml
+ devops-pr.yml = devops-pr.yml
+ devops-rs.yml = devops-rs.yml
+ devops-tt.yml = devops-tt.yml
proxy.props = proxy.props
test.props = test.props
test.targets = test.targets
diff --git a/Installer/VisualStudioTeamServices.Authentication.nuspec b/Installer/AzureDevops.Authentication.nuspec
similarity index 66%
rename from Installer/VisualStudioTeamServices.Authentication.nuspec
rename to Installer/AzureDevops.Authentication.nuspec
index c188d8839..51c8ad074 100644
--- a/Installer/VisualStudioTeamServices.Authentication.nuspec
+++ b/Installer/AzureDevops.Authentication.nuspec
@@ -16,14 +16,14 @@
- Git VSTS Visual Studio Team Services TFS GitHub Active Directory NTLM Basic Authentication Library ADAL Directory Azure AD AAD Identity Authentication .NET Windows
+ Git VSTS Visual Studio Team Services Azure DevOps AzDevOps TFS GitHub Active Directory NTLM Basic Authentication Library ADAL Directory Azure AD AAD Identity Authentication .NET Windows
-
+
-
+
-
+
\ No newline at end of file
diff --git a/Installer/Components.proj b/Installer/Components.proj
index a2db7c1d1..dbc6c7de8 100644
--- a/Installer/Components.proj
+++ b/Installer/Components.proj
@@ -52,9 +52,9 @@
{19770407-B493-459D-BB4F-04FBEFB1BA13}
Microsoft.Alm.Authentication
-
+
{19770407-D7D8-4A37-914C-F552FF4B90D4}
- VisualStudioTeamServices.Authentication
+ AzureDevOps.Authentication
@@ -97,17 +97,17 @@
-
-
+
+
-
+
-
+
diff --git a/Installer/Installer.proj b/Installer/Installer.proj
index bf871c5c5..1b78efa52 100644
--- a/Installer/Installer.proj
+++ b/Installer/Installer.proj
@@ -32,11 +32,11 @@
$([System.IO.File]::ReadAllText($(SolutionDir)\Cli\Manager\Properties\AssemblyInfo.cs))
- $([System.IO.File]::ReadAllText($(SolutionDir)\VisualStudioTeamServices.Authentication\Src\Properties\AssemblyInfo.cs))
+ $([System.IO.File]::ReadAllText($(SolutionDir)\AzureDevOps.Authentication\Src\Properties\AssemblyInfo.cs))
^\s*\[assembly\s*:\s*AssemblyVersion\s*\(\s*\s*"(\d+\.\d+\.\d+)\.?\d*\s*"\s*\)
$([System.Text.RegularExpressions.Regex]::Match($(GcmProps), $(Pattern), System.Text.RegularExpressions.RegexOptions.Multiline).Groups[1].Value)
$([System.Text.RegularExpressions.Regex]::Match($(PkgProps), $(Pattern), System.Text.RegularExpressions.RegexOptions.Multiline).Groups[1].Value)
- VisualStudioTeamServices.Authentication
+ AzureDevOps.Authentication
^\s*\[assembly: AssemblyDescription\s*\(\s*"\s*([^"]+)\s*"\s*\)
$([System.Text.RegularExpressions.Regex]::Match($(PkgProps), $(Pattern), System.Text.RegularExpressions.RegexOptions.Multiline).Groups[1].Value)
@@ -48,7 +48,7 @@
$(OutputPath)\GCMW-$(GcmVersion).exe
- $(OutputPath)\VisualStudioTeamServices.Authentication.$(PkgVersion).nupkg
+ $(OutputPath)\AzureDevOps.Authentication.$(PkgVersion).nupkg
$(OutputPath)\gcmw-v$(GcmVersion).zip
@@ -115,7 +115,7 @@
-
+
@@ -145,7 +145,7 @@
Directories="$(OutputPath)" />
-
+
@@ -175,8 +175,8 @@
-
+
CreateAuthentication(Program progra
program.Trace.WriteLine($"detecting authority type for '{operationArguments.TargetUri}'.");
// Detect the authority.
- authority = await Vsts.Authentication.GetAuthentication(program.Context,
- operationArguments.TargetUri,
- Program.VstsCredentialScope,
- new SecretStore(program.Context, secretsNamespace, Vsts.Authentication.UriNameConversion))
+ authority = await Azure.Authentication.GetAuthentication(program.Context,
+ operationArguments.TargetUri,
+ Program.DevOpsCredentialScope,
+ new SecretStore(program.Context,
+ secretsNamespace,
+ Azure.Authentication.UriNameConversion))
?? Github.Authentication.GetAuthentication(program.Context,
operationArguments.TargetUri,
Program.GitHubCredentialScope,
- new SecretStore(program.Context, secretsNamespace, Secret.UriToName),
+ new SecretStore(program.Context,
+ secretsNamespace,
+ Secret.UriToName),
githubCredentialCallback,
githubAuthcodeCallback,
null)
?? Bitbucket.Authentication.GetAuthentication(program.Context,
operationArguments.TargetUri,
- new SecretStore(program.Context, secretsNamespace, Secret.UriToIdentityUrl),
+ new SecretStore(program.Context,
+ secretsNamespace,
+ Secret.UriToIdentityUrl),
bitbucketCredentialCallback,
bitbucketOauthCallback);
if (authority != null)
{
// Set the authority type based on the returned value.
- if (authority is Vsts.MsaAuthentication)
+ if (authority is Azure.MsaAuthentication)
{
operationArguments.Authority = AuthorityType.MicrosoftAccount;
goto case AuthorityType.MicrosoftAccount;
}
- else if (authority is Vsts.AadAuthentication)
+ else if (authority is Azure.AadAuthentication)
{
operationArguments.Authority = AuthorityType.AzureDirectory;
goto case AuthorityType.AzureDirectory;
@@ -138,7 +144,7 @@ public static async Task CreateAuthentication(Program progra
Guid tenantId = Guid.Empty;
// Get the identity of the tenant.
- var result = await Vsts.Authentication.DetectAuthority(program.Context, operationArguments.TargetUri);
+ var result = await Azure.Authentication.DetectAuthority(program.Context, operationArguments.TargetUri);
if (result.HasValue)
{
@@ -146,13 +152,15 @@ public static async Task CreateAuthentication(Program progra
}
// Create the authority object.
- authority = new Vsts.AadAuthentication(program.Context,
- tenantId,
- operationArguments.VstsTokenScope,
- new SecretStore(program.Context, secretsNamespace, Vsts.AadAuthentication.UriNameConversion));
+ authority = new Azure.AadAuthentication(program.Context,
+ tenantId,
+ operationArguments.DevOpsTokenScope,
+ new SecretStore(program.Context,
+ secretsNamespace,
+ Azure.AadAuthentication.UriNameConversion));
}
- // Return the allocated authority or a generic AAD backed VSTS authentication object.
+ // Return the allocated authority or a generic AAD backed Azure DevOps authentication object.
return authority;
}
@@ -171,7 +179,9 @@ public static async Task CreateAuthentication(Program progra
return authority ?? new Github.Authentication(program.Context,
operationArguments.TargetUri,
Program.GitHubCredentialScope,
- new SecretStore(program.Context, secretsNamespace, Secret.UriToName),
+ new SecretStore(program.Context,
+ secretsNamespace,
+ Secret.UriToName),
githubCredentialCallback,
githubAuthcodeCallback,
null);
@@ -183,7 +193,9 @@ public static async Task CreateAuthentication(Program progra
// Return a Bitbucket authentication object.
return authority ?? new Bitbucket.Authentication(program.Context,
- new SecretStore(program.Context, secretsNamespace, Secret.UriToIdentityUrl),
+ new SecretStore(program.Context,
+ secretsNamespace,
+ Secret.UriToIdentityUrl),
bitbucketCredentialCallback,
bitbucketOauthCallback);
}
@@ -192,10 +204,12 @@ public static async Task CreateAuthentication(Program progra
{
program.Trace.WriteLine($"authority for '{operationArguments.TargetUri}' is Microsoft Live.");
- // Return the allocated authority or a generic MSA backed VSTS authentication object.
- return authority ?? new Vsts.MsaAuthentication(program.Context,
- operationArguments.VstsTokenScope,
- new SecretStore(program.Context, secretsNamespace, Vsts.MsaAuthentication.UriNameConversion));
+ // Return the allocated authority or a generic MSA backed Azure DevOps authentication object.
+ return authority ?? new Azure.MsaAuthentication(program.Context,
+ operationArguments.DevOpsTokenScope,
+ new SecretStore(program.Context,
+ secretsNamespace,
+ Azure.MsaAuthentication.UriNameConversion));
}
case AuthorityType.Ntlm:
@@ -211,7 +225,9 @@ public static async Task CreateAuthentication(Program progra
// Return a generic username + password authentication object.
return authority ?? new BasicAuthentication(program.Context,
- new SecretStore(program.Context, secretsNamespace, Secret.UriToIdentityUrl),
+ new SecretStore(program.Context,
+ secretsNamespace,
+ Secret.UriToIdentityUrl),
basicNtlmSupport,
basicCredentialCallback,
null);
@@ -240,9 +256,9 @@ public static async Task DeleteCredentials(Program program, OperationArgum
case AuthorityType.AzureDirectory:
case AuthorityType.MicrosoftAccount:
{
- program.Trace.WriteLine($"deleting VSTS credentials for '{operationArguments.TargetUri}'.");
- var vstsAuth = authentication as Vsts.Authentication;
- return await vstsAuth.DeleteCredentials(operationArguments.TargetUri);
+ program.Trace.WriteLine($"deleting Azure DevOps credentials for '{operationArguments.TargetUri}'.");
+ var adoAuth = authentication as Azure.Authentication;
+ return await adoAuth.DeleteCredentials(operationArguments.TargetUri);
}
case AuthorityType.GitHub:
@@ -586,33 +602,57 @@ public static async Task LoadOperationArguments(Program program, OperationArgume
}
}
- // Look for custom VSTS scope settings.
- if (program.TryReadString(operationArguments, KeyType.VstsScope, out value))
+ // Look for custom Azure DevOps scope settings.
+ if (program.TryReadString(operationArguments, KeyType.DevOpsScope, out value))
{
- program.Trace.WriteLine($"{program.KeyTypeName(KeyType.VstsScope)} = '{value}'.");
+ program.Trace.WriteLine($"{program.KeyTypeName(KeyType.DevOpsScope)} = '{value}'.");
- Vsts.TokenScope vstsTokenScope = Vsts.TokenScope.None;
+ Azure.TokenScope devopsTokenScope = Azure.TokenScope.None;
var scopes = value.Split(TokenScopeSeparatorCharacters.ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < scopes.Length; i += 1)
{
scopes[i] = scopes[i].Trim();
- if (Vsts.TokenScope.Find(scopes[i], out Vsts.TokenScope scope))
+ if (Azure.TokenScope.Find(scopes[i], out Azure.TokenScope scope))
{
- vstsTokenScope = vstsTokenScope | scope;
+ devopsTokenScope = devopsTokenScope | scope;
}
else
{
- program.Trace.WriteLine($"Unknown VSTS Token scope: '{scopes[i]}'.");
+ program.Trace.WriteLine($"Unknown Azure DevOps Token scope: '{scopes[i]}'.");
}
}
- operationArguments.VstsTokenScope = vstsTokenScope;
+ operationArguments.DevOpsTokenScope = devopsTokenScope;
+ }
+ else if (program.TryReadString(operationArguments, KeyType.VstsScope, out value))
+ {
+ program.Trace.WriteLine($"GCM_VSTS_SCOPE = '{value}'.");
+ program.WriteLine($"WARNING: the 'GCM_VSTS_SCOPE' variable has been deprecated, use 'GCM_DEVOPS_SCOPE' instead.");
+
+ Azure.TokenScope devopsTokenScope = Azure.TokenScope.None;
+
+ var scopes = value.Split(TokenScopeSeparatorCharacters.ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
+ for (int i = 0; i < scopes.Length; i += 1)
+ {
+ scopes[i] = scopes[i].Trim();
+
+ if (Azure.TokenScope.Find(scopes[i], out Azure.TokenScope scope))
+ {
+ devopsTokenScope = devopsTokenScope | scope;
+ }
+ else
+ {
+ program.Trace.WriteLine($"Unknown Azure DevOps Token scope: '{scopes[i]}'.");
+ }
+ }
+
+ operationArguments.DevOpsTokenScope = devopsTokenScope;
}
// Check for configuration supplied user-info.
- if (program.TryReadString(operationArguments, KeyType.Username, out value))
+ if (program.TryReadString(operationArguments, KeyType.Username, out value))
{
program.Trace.WriteLine($"{program.KeyTypeName(KeyType.Username)} = '{value}'.");
@@ -740,8 +780,8 @@ public static async Task QueryCredentials(Program program, Operation
case AuthorityType.AzureDirectory:
{
- var aadAuth = authentication as Vsts.AadAuthentication;
- var patOptions = new Vsts.PersonalAccessTokenOptions()
+ var aadAuth = authentication as Azure.AadAuthentication;
+ var patOptions = new Azure.PersonalAccessTokenOptions()
{
RequireCompactToken = true,
TokenDuration = operationArguments.TokenDuration,
@@ -776,8 +816,8 @@ public static async Task QueryCredentials(Program program, Operation
case AuthorityType.MicrosoftAccount:
{
- var msaAuth = authentication as Vsts.MsaAuthentication;
- var patOptions = new Vsts.PersonalAccessTokenOptions()
+ var msaAuth = authentication as Azure.MsaAuthentication;
+ var patOptions = new Azure.PersonalAccessTokenOptions()
{
RequireCompactToken = true,
TokenDuration = operationArguments.TokenDuration,
diff --git a/Shared/Cli/OperationArguments.cs b/Shared/Cli/OperationArguments.cs
index d65b65f5b..17e5023ca 100644
--- a/Shared/Cli/OperationArguments.cs
+++ b/Shared/Cli/OperationArguments.cs
@@ -30,8 +30,8 @@
using System.Threading.Tasks;
using Microsoft.Alm.Authentication;
using static System.Globalization.CultureInfo;
+using Azure = AzureDevOps.Authentication;
using Git = Microsoft.Alm.Authentication.Git;
-using Vsts = VisualStudioTeamServices.Authentication;
namespace Microsoft.Alm.Cli
{
@@ -53,7 +53,7 @@ public OperationArguments(RuntimeContext context)
_useModalUi = true;
_useSystemConfig = true;
_validateCredentials = true;
- _vstsTokenScope = Program.VstsCredentialScope;
+ _devopsTokenScope = Program.DevOpsCredentialScope;
}
///
@@ -69,6 +69,7 @@ public OperationArguments()
private Git.Configuration _configuration;
private Credential _credentials;
private string _customNamespace;
+ private Azure.TokenScope _devopsTokenScope;
private Dictionary _environmentVariables;
private string _gitRemoteHttpCommandLine;
private Interactivity _interactivity;
@@ -87,7 +88,6 @@ public OperationArguments()
private string _username;
private bool _useSystemConfig;
private bool _validateCredentials;
- private Vsts.TokenScope _vstsTokenScope;
private bool _writeLog;
///
@@ -123,6 +123,17 @@ public virtual string CustomNamespace
set { _customNamespace = value; }
}
+ ///
+ /// Gets or sets the scope, or permissions, when requesting new access tokens from Azure DevOps.
+ ///
+ /// Default value is ``.
+ ///
+ public virtual Azure.TokenScope DevOpsTokenScope
+ {
+ get { return _devopsTokenScope; }
+ set { _devopsTokenScope = value; }
+ }
+
///
/// Gets a map of the process's environmental variables keyed on case-insensitive names.
///
@@ -423,17 +434,6 @@ public virtual bool ValidateCredentials
set { _validateCredentials = value; }
}
- ///
- /// Gets or sets the scope, or permissions, when requesting new access tokens from VSTS.
- ///
- /// Default value is ``.
- ///
- public virtual Vsts.TokenScope VstsTokenScope
- {
- get { return _vstsTokenScope; }
- set { _vstsTokenScope = value; }
- }
-
///
/// Gets or sets `` if the GCM should write trace events; otherwise ``.
///
diff --git a/Shared/Cli/Program.cs b/Shared/Cli/Program.cs
index 6a7a70c0f..6141ebc26 100644
--- a/Shared/Cli/Program.cs
+++ b/Shared/Cli/Program.cs
@@ -32,10 +32,10 @@
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Alm.Authentication;
+using Azure = AzureDevOps.Authentication;
using Bitbucket = Atlassian.Bitbucket.Authentication;
using Git = Microsoft.Alm.Authentication.Git;
using Github = GitHub.Authentication;
-using Vsts = VisualStudioTeamServices.Authentication;
namespace Microsoft.Alm.Cli
{
@@ -44,6 +44,7 @@ enum KeyType
Authority,
ConfigNoLocal,
ConfigNoSystem,
+ DevOpsScope,
HttpPath,
HttpProxy,
HttpsProxy,
@@ -56,8 +57,8 @@ enum KeyType
UrlOverride,
Username,
Validate,
- VstsScope,
ParentHwnd,
+ VstsScope,
Writelog,
}
@@ -77,7 +78,7 @@ partial class Program
internal const string ConfigPrefix = "credential";
internal const string SecretsNamespace = "git";
- internal static readonly Vsts.TokenScope VstsCredentialScope = Vsts.TokenScope.CodeWrite | Vsts.TokenScope.PackagingRead;
+ internal static readonly Azure.TokenScope DevOpsCredentialScope = Azure.TokenScope.CodeWrite | Azure.TokenScope.PackagingRead;
internal static readonly Github.TokenScope GitHubCredentialScope = Github.TokenScope.Gist | Github.TokenScope.Repo;
internal BasicCredentialPromptDelegate _basicCredentialPrompt = ConsoleFunctions.CredentialPrompt;
@@ -119,6 +120,7 @@ partial class Program
internal readonly Dictionary _configurationKeys = new Dictionary()
{
{ KeyType.Authority, "authority" },
+ { KeyType.DevOpsScope, "devopsScope" },
{ KeyType.HttpProxy, "httpProxy" },
{ KeyType.HttpsProxy, "httpsProxy" },
{ KeyType.Interactive, "interactive" },
@@ -137,6 +139,7 @@ partial class Program
{ KeyType.Authority, "GCM_AUTHORITY" },
{ KeyType.ConfigNoLocal, "GCM_CONFIG_NOLOCAL" },
{ KeyType.ConfigNoSystem, "GCM_CONFIG_NOSYSTEM" },
+ { KeyType.DevOpsScope, "GCM_DEVOPS_SCOPE" },
{ KeyType.HttpProxy, "HTTP_PROXY" },
{ KeyType.HttpsProxy, "HTTPS_PROXY" },
{ KeyType.HttpUserAgent, "GCM_HTTP_USER_AGENT" },
diff --git a/devops-ci.yml b/devops-ci.yml
new file mode 100644
index 000000000..df0d3c845
--- /dev/null
+++ b/devops-ci.yml
@@ -0,0 +1,79 @@
+# ** Git Credential Manager for Windows **
+#
+# Copyright (c) Microsoft Corporation
+# All rights reserved.
+#
+# MIT License
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the """"Software""""), to deal
+# in the Software without restriction, including without limitation the rights to
+# use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+# the Software, and to permit persons to whom the Software is furnished to do so,
+# subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in all
+# copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+# FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+# COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE."
+#
+# == Continuous Integration Pipeline ==
+#
+# Learn more at https://docs.microsoft.com/en-us/vsts/pipelines/get-started-yaml?view=vsts&tabs=gitvsts
+# https://microsoft-git-tools.visualstudio.com/Git-Credential-Manager-for-Windows
+
+phases:
+ - template: devops-tt.yml
+ parameters:
+ QueueName: 'Hosted VS2017'
+
+ CoreBuild:
+ - task: MSBuild@1
+ displayName: 'Core Build'
+ inputs:
+ solution: 'Installer/Installer.proj'
+ msbuildArguments: '/nologo /verbosity:$(Build.Verbosity) /binaryLogger:$(Build.SourcesDirectory)/$(build.buildNumber).binlog'
+ platform: '$(Build.Platform)'
+ configuration: '$(Build.Configuration)'
+ maximumCpuCount: false
+ msbuildArchitecture: '$(Build.Architecture)'
+
+ MicrobuildSetup: []
+ MicrobuildClean: []
+
+ NugetCommand:
+ - task: NuGetCommand@2
+ displayName: NuGet restore
+ inputs:
+ restoreSolution: 'GitCredentialManager.sln'
+ verbosityRestore: 'quiet'
+
+ - task: NuGetCommand@2
+ displayName: NuGet restore
+ inputs:
+ command: custom
+ arguments: restore "$(Build.SourcesDirectory)\Installer\packages.config" -PackagesDirectory "$(Build.SourcesDirectory)\packages" -SolutionDirectory "$(Build.SourcesDirectory)" -Verbosity Quiet
+
+ PublishArtifacts:
+ - task: PublishBuildArtifacts@1
+ displayName: 'Publish Artifact: Binary Log'
+ continueOnError: true
+ condition: eq(variables['system.pullrequest.isfork'], false)
+ inputs:
+ pathtoPublish: '$(Build.SourcesDirectory)\$(build.buildNumber).binlog'
+ artifactName: '$(build.buildNumber).binlog'
+ publishLocation: Container
+
+ - task: PublishBuildArtifacts@1
+ displayName: 'Publish Artifact: Binaries'
+ continueOnError: true
+ condition: and(succeeded(), eq(variables['system.pullrequest.isfork'], false))
+ inputs:
+ pathtoPublish: '$(Build.SourcesDirectory)\Deploy\'
+ artifactName: '$(Build.BuildNumber).output'
+ publishLocation: Container
diff --git a/devops-pr.yml b/devops-pr.yml
new file mode 100644
index 000000000..e8476a367
--- /dev/null
+++ b/devops-pr.yml
@@ -0,0 +1,56 @@
+# ** Git Credential Manager for Windows **
+#
+# Copyright (c) Microsoft Corporation
+# All rights reserved.
+#
+# MIT License
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the """"Software""""), to deal
+# in the Software without restriction, including without limitation the rights to
+# use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+# the Software, and to permit persons to whom the Software is furnished to do so,
+# subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in all
+# copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+# FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+# COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE."
+#
+# == Pull Request Validtion Pipeline ==
+#
+# Learn more at https://docs.microsoft.com/en-us/vsts/pipelines/get-started-yaml?view=vsts&tabs=gitvsts
+# https://dev.azure.com/microsoft-git-tools/Git-Credential-Manager-for-Windows
+
+phases:
+ - template: devops-tt.yml
+ parameters:
+ QueueName: 'Hosted VS2017'
+
+ CoreBuild:
+ - task: MSBuild@1
+ displayName: 'Core Build'
+ inputs:
+ solution: "GitCredentialManager.sln"
+ msbuildArguments: /nologo /verbosity:$(Build.Verbosity) "/binaryLogger:$(Build.SourcesDirectory)/$(build.buildNumber).binlog"
+ platform: '$(Build.Platform)'
+ configuration: '$(Build.Configuration)'
+ maximumCpuCount: false
+ msbuildArchitecture: '$(Build.Architecture)'
+
+ MicrobuildSetup: []
+ MicrobuildClean: []
+
+ NugetCommand:
+ - task: NuGetCommand@2
+ displayName: NuGet restore
+ inputs:
+ restoreSolution: 'GitCredentialManager.sln'
+ verbosityRestore: 'quiet'
+
+ PublishArtifacts: []
diff --git a/devops-rs.yml b/devops-rs.yml
new file mode 100644
index 000000000..c1086db79
--- /dev/null
+++ b/devops-rs.yml
@@ -0,0 +1,91 @@
+# ** Git Credential Manager for Windows **
+#
+# Copyright (c) Microsoft Corporation
+# All rights reserved.
+#
+# MIT License
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the """"Software""""), to deal
+# in the Software without restriction, including without limitation the rights to
+# use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+# the Software, and to permit persons to whom the Software is furnished to do so,
+# subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in all
+# copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+# FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+# COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE."
+#
+# == RealSign and Release Pipeline ==
+#
+# Learn more at https://docs.microsoft.com/en-us/vsts/pipelines/get-started-yaml?view=vsts&tabs=gitvsts
+
+phases:
+ - template: devops-tt.yml
+ parameters:
+ QueueName: 'VSEng-MicroBuildVS2017'
+
+ CoreBuild:
+ - task: MSBuild@1
+ displayName: 'Core Build'
+ inputs:
+ solution: 'Installer/Installer.proj'
+ msbuildArguments: '/nologo /verbosity:$(Build.Verbosity) "/binaryLogger:$(Build.SourcesDirectory)/$(build.buildNumber).binlog"'
+ platform: '$(Build.Platform)'
+ configuration: '$(Build.Configuration)'
+ maximumCpuCount: false
+ msbuildArchitecture: '$(Build.Architecture)'
+
+ MicrobuildSetup:
+ - task: ms-vseng.MicroBuildTasks.30666190-6959-11e5-9f96-f56098202fef.MicroBuildSigningPlugin@1
+ displayName: Setup MicroBuild Signing
+ condition: and(succeeded(), or(eq(variables['signType'],'real'), eq(variables['signType'],'test')))
+ continueOnError: true
+ inputs:
+ feedSource: https://devdiv.pkgs.visualstudio.com/DefaultCollection/_packaging/MicroBuildToolset/nuget/v3/index.json
+ signType: '$(SignType)'
+ zipSources: true
+
+ MicrobuildClean:
+ - task: ms-vseng.MicroBuildTasks.521a94ea-9e68-468a-8167-6dcf361ea776.MicroBuildCleanup@1
+ displayName: MicroBuild Cleanup
+ condition: or(eq(variables['signType'],'real'), eq(variables['signType'],'test'))
+ continueOnError: true
+
+ NugetCommand:
+ - task: NuGetCommand@2
+ displayName: NuGet restore
+ inputs:
+ restoreSolution: 'GitCredentialManager.sln'
+ verbosityRestore: 'quiet'
+
+ - task: NuGetCommand@2
+ displayName: NuGet restore
+ inputs:
+ command: custom
+ arguments: restore "$(Build.SourcesDirectory)\Installer\packages.config" -PackagesDirectory "$(Build.SourcesDirectory)\packages" -SolutionDirectory "$(Build.SourcesDirectory)" -Verbosity Quiet
+
+ PublishArtifacts:
+ - task: PublishBuildArtifacts@1
+ displayName: 'Publish Artifact: Binary Log'
+ continueOnError: true
+ condition: eq(variables['system.pullrequest.isfork'], false)
+ inputs:
+ pathtoPublish: $(Build.SourcesDirectory)\$(build.buildNumber).binlog
+ artifactName: $(build.buildNumber).binlog
+ publishLocation: Container
+
+ - task: PublishBuildArtifacts@1
+ displayName: 'Publish Artifact: Binaries'
+ continueOnError: true
+ condition: and(succeeded(), eq(variables['system.pullrequest.isfork'], false))
+ inputs:
+ pathtoPublish: $(Build.SourcesDirectory)\Deploy\
+ artifactName: $(Build.BuildNumber).output
+ publishLocation: Container
diff --git a/devops-tt.yml b/devops-tt.yml
new file mode 100644
index 000000000..5189fa0de
--- /dev/null
+++ b/devops-tt.yml
@@ -0,0 +1,85 @@
+# ** Git Credential Manager for Windows **
+#
+# Copyright (c) Microsoft Corporation
+# All rights reserved.
+#
+# MIT License
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the """"Software""""), to deal
+# in the Software without restriction, including without limitation the rights to
+# use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+# the Software, and to permit persons to whom the Software is furnished to do so,
+# subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in all
+# copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+# FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+# COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE."
+#
+# == Pipeline Template ==
+#
+# Learn more at https://docs.microsoft.com/en-us/vsts/pipelines/get-started-yaml?view=vsts&tabs=gitvsts
+
+parameters:
+ QueueName: ''
+ CoreBuild: []
+ MicrobuildSetup: []
+ MicrobuildClean: []
+ NugetCommand: []
+ PublishArtifacts: []
+
+phases:
+ - phase: Build
+ queue:
+ name: ${{ parameters.QueueName }}
+ demands:
+ - msbuild
+ - visualstudio
+ - vstest
+
+ steps:
+ - task: NuGetToolInstaller@0
+ displayName: 'Use NuGet 4.4.0'
+ inputs:
+ versionSpec: 4.4.0
+
+ - ${{ parameters.NugetCommand }}
+
+ - ${{ parameters.MicrobuildSetup }}
+
+ - ${{ parameters.CoreBuild }}
+
+ - task: VSTest@2
+ displayName: 'Execute Tests (Xunit)'
+ inputs:
+ testAssemblyVer2: |
+ **\*Test.dll
+ !**\xunit.*.dll
+ !**\obj\**
+ searchFolder: '$(Build.SourcesDirectory)'
+ runInParallel: true
+ runTestsInIsolation: true
+ codeCoverageEnabled: true
+ platform: '$(Build.Platform)'
+ configuration: '$(Build.Configuration)'
+
+ - ${{ parameters.PublishArtifacts }}
+
+ - task: DeleteFiles@1
+ displayName: 'Delete Artifacts from Agent'
+ inputs:
+ sourceFolder: '$(Build.SourcesDirectory)'
+ contents: |
+ *.binlog
+ Deploy\*.*
+ **\bin\**\*.*
+ **\obj\**\*.*
+
+ - ${{ parameters.MicrobuildClean }}
+
\ No newline at end of file