in CredentialProvider.Microsoft/CredentialProviders/Vsts/VstsSessionTokenClient.cs [30:75]
public async Task<string> CreateSessionTokenAsync(VstsTokenType tokenType, DateTime validTo, CancellationToken cancellationToken)
{
var spsEndpoint = await authUtil.GetAuthorizationEndpoint(vstsUri, cancellationToken);
if (spsEndpoint == null)
{
return null;
}
using (var httpClient = new HttpClient())
{
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", bearerToken);
foreach (var userAgent in Program.UserAgent)
{
httpClient.DefaultRequestHeaders.UserAgent.Add(userAgent);
}
var content = new StringContent(
JsonConvert.SerializeObject(
new VstsSessionToken()
{
DisplayName = "Azure DevOps Artifacts Credential Provider",
Scope = TokenScope,
ValidTo = validTo
}),
Encoding.UTF8,
"application/json");
var uriBuilder = new UriBuilder(spsEndpoint)
{
Query = $"tokenType={tokenType}&api-version=5.0-preview.1"
};
uriBuilder.Path = uriBuilder.Path.TrimEnd('/') + "/_apis/Token/SessionTokens";
using (var response = await httpClient.PostAsync(uriBuilder.Uri, content, cancellationToken))
{
response.EnsureSuccessStatusCode();
var serializedResponse = await response.Content.ReadAsStringAsync();
var responseToken = JsonConvert.DeserializeObject<VstsSessionToken>(serializedResponse);
return responseToken.Token;
}
}
}