in CredentialProvider.Microsoft/CredentialProviders/Vsts/VstsCredentialProvider.cs [38:83]
public override async Task<bool> CanProvideCredentialsAsync(Uri uri)
{
// If for any reason we reach this point and any of the three build task env vars are set,
// we should not try get credentials with this cred provider.
string feedEndPointsJsonEnvVar = Environment.GetEnvironmentVariable(EnvUtil.BuildTaskExternalEndpoints);
string uriPrefixesStringEnvVar = Environment.GetEnvironmentVariable(EnvUtil.BuildTaskUriPrefixes);
string accessTokenEnvVar = Environment.GetEnvironmentVariable(EnvUtil.BuildTaskAccessToken);
if (string.IsNullOrWhiteSpace(feedEndPointsJsonEnvVar) == false || string.IsNullOrWhiteSpace(uriPrefixesStringEnvVar) == false || string.IsNullOrWhiteSpace(accessTokenEnvVar) == false)
{
Verbose(Resources.BuildTaskCredProviderIsUsedError);
return false;
}
var validHosts = EnvUtil.GetHostsFromEnvironment(Logger, EnvUtil.SupportedHostsEnvVar, new[]
{
".pkgs.vsts.me", // DevFabric
".pkgs.codedev.ms", // DevFabric
".pkgs.codeapp.ms", // AppFabric
".pkgs.visualstudio.com", // Prod
".pkgs.dev.azure.com" // Prod
});
bool isValidHost = validHosts.Any(host => uri.Host.EndsWith(host, StringComparison.OrdinalIgnoreCase));
if (isValidHost)
{
Verbose(string.Format(Resources.HostAccepted, uri.Host));
return true;
}
var azDevOpsType = await authUtil.GetAzDevDeploymentType(uri);
if (azDevOpsType == AzDevDeploymentType.Hosted)
{
Verbose(Resources.ValidHeaders);
return true;
}
if (azDevOpsType == AzDevDeploymentType.OnPrem)
{
Verbose(Resources.OnPremDetected);
return false;
}
Verbose(string.Format(Resources.ExternalUri, uri));
return false;
}