Skip to content

Commit 07896d1

Browse files
authored
Pat token fix (#1599)
1 parent 7d88cf4 commit 07896d1

File tree

4 files changed

+66
-11
lines changed

4 files changed

+66
-11
lines changed

src/code/ServerApiCall.cs

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,12 @@
22
// Licensed under the MIT License.
33

44
using Microsoft.PowerShell.PSResourceGet.UtilClasses;
5+
using System;
56
using System.IO;
67
using System.Net.Http;
78
using NuGet.Versioning;
89
using System.Net;
10+
using System.Text;
911
using System.Runtime.ExceptionServices;
1012
using System.Management.Automation;
1113

@@ -25,12 +27,29 @@ internal abstract class ServerApiCall : IServerAPICalls
2527
public ServerApiCall(PSRepositoryInfo repository, NetworkCredential networkCredential)
2628
{
2729
this.Repository = repository;
28-
HttpClientHandler handler = new HttpClientHandler()
30+
31+
HttpClientHandler handler = new HttpClientHandler();
32+
bool token = false;
33+
34+
if(networkCredential != null)
2935
{
30-
Credentials = networkCredential
36+
token = String.Equals("token", networkCredential.UserName) ? true : false;
3137
};
3238

33-
_sessionClient = new HttpClient(handler);
39+
if (token)
40+
{
41+
string credString = string.Format(":{0}", networkCredential.Password);
42+
byte[] byteArray = Encoding.ASCII.GetBytes(credString);
43+
44+
_sessionClient = new HttpClient(handler);
45+
_sessionClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray));
46+
47+
} else {
48+
49+
handler.Credentials = networkCredential;
50+
51+
_sessionClient = new HttpClient(handler);
52+
};
3453
}
3554

3655
#endregion

src/code/Utils.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -611,7 +611,7 @@ public static PSCredential GetRepositoryCredentialFromSecretManagement(
611611
}
612612
else if (secretObject.BaseObject is SecureString secretString)
613613
{
614-
return new PSCredential(repositoryCredentialInfo.SecretName, secretString);
614+
return new PSCredential("token", secretString);
615615
}
616616
}
617617

src/code/V2ServerAPICalls.cs

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
using System.Threading.Tasks;
1212
using System.Xml;
1313
using System.Net;
14+
using System.Text;
1415
using System.Runtime.ExceptionServices;
1516
using System.Management.Automation;
1617
using System.Reflection;
@@ -51,12 +52,29 @@ public V2ServerAPICalls (PSRepositoryInfo repository, PSCmdlet cmdletPassedIn, N
5152
{
5253
this.Repository = repository;
5354
_cmdletPassedIn = cmdletPassedIn;
54-
HttpClientHandler handler = new HttpClientHandler()
55+
HttpClientHandler handler = new HttpClientHandler();
56+
bool token = false;
57+
58+
if(networkCredential != null)
59+
{
60+
token = String.Equals("token", networkCredential.UserName) ? true : false;
61+
};
62+
63+
if (token)
5564
{
56-
Credentials = networkCredential
65+
string credString = string.Format(":{0}", networkCredential.Password);
66+
byte[] byteArray = Encoding.ASCII.GetBytes(credString);
67+
68+
_sessionClient = new HttpClient(handler);
69+
_sessionClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray));
70+
71+
} else {
72+
73+
handler.Credentials = networkCredential;
74+
75+
_sessionClient = new HttpClient(handler);
5776
};
5877

59-
_sessionClient = new HttpClient(handler);
6078
_sessionClient.DefaultRequestHeaders.TryAddWithoutValidation("User-Agent", userAgentString);
6179
var repoURL = repository.Uri.ToString().ToLower();
6280
_isADORepo = repoURL.Contains("pkgs.dev.azure.com") || repoURL.Contains("pkgs.visualstudio.com");

src/code/V3ServerAPICalls.cs

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
using System.Net.Http;
1010
using System.Linq;
1111
using System.Net;
12+
using System.Text;
1213
using System.Text.Json;
1314
using System.Threading.Tasks;
1415
using System.Collections;
@@ -50,13 +51,30 @@ public V3ServerAPICalls(PSRepositoryInfo repository, PSCmdlet cmdletPassedIn, Ne
5051
{
5152
this.Repository = repository;
5253
_cmdletPassedIn = cmdletPassedIn;
53-
HttpClientHandler handler = new HttpClientHandler()
54+
HttpClientHandler handler = new HttpClientHandler();
55+
handler.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
56+
bool token = false;
57+
58+
if(networkCredential != null)
59+
{
60+
token = String.Equals("token", networkCredential.UserName) ? true : false;
61+
};
62+
63+
if (token)
5464
{
55-
AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate,
56-
Credentials = networkCredential
65+
string credString = string.Format(":{0}", networkCredential.Password);
66+
byte[] byteArray = Encoding.ASCII.GetBytes(credString);
67+
68+
_sessionClient = new HttpClient(handler);
69+
_sessionClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray));
70+
71+
} else {
72+
73+
handler.Credentials = networkCredential;
74+
75+
_sessionClient = new HttpClient(handler);
5776
};
5877

59-
_sessionClient = new HttpClient(handler);
6078
_sessionClient.DefaultRequestHeaders.TryAddWithoutValidation("User-Agent", userAgentString);
6179

6280
_isNuGetRepo = String.Equals(Repository.Uri.AbsoluteUri, nugetRepoUri, StringComparison.InvariantCultureIgnoreCase);

0 commit comments

Comments
 (0)