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); } } }
public async Task <string> CreateSessionTokenAsync(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() { Scope = "vso.packaging_write", ValidTo = validTo }), Encoding.UTF8, "application/json"); using (var response = await httpClient.PostAsync(new Uri(spsEndpoint, $"/_apis/Token/SessionTokens?api-version=5.0-preview.1"), content, cancellationToken)) { response.EnsureSuccessStatusCode(); var serializedResponse = await response.Content.ReadAsStringAsync(); var responseToken = JsonConvert.DeserializeObject <VstsSessionToken>(serializedResponse); return(responseToken.Token); } } }