Skip to content

Commit e84060d

Browse files
gerryleysalerickson
authored andcommitted
Pat token fix (#1599)
1 parent 9271a46 commit e84060d

File tree

4 files changed

+56
-8
lines changed

4 files changed

+56
-8
lines changed

src/code/ServerApiCall.cs

Lines changed: 9 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
using System;
@@ -26,9 +28,13 @@ internal abstract class ServerApiCall : IServerAPICalls
2628
public ServerApiCall(PSRepositoryInfo repository, NetworkCredential networkCredential)
2729
{
2830
this.Repository = repository;
29-
HttpClientHandler handler = new HttpClientHandler()
31+
32+
HttpClientHandler handler = new HttpClientHandler();
33+
bool token = false;
34+
35+
if(networkCredential != null)
3036
{
31-
Credentials = networkCredential
37+
token = String.Equals("token", networkCredential.UserName) ? true : false;
3238
};
3339

3440
if (token)
@@ -38,14 +44,14 @@ public ServerApiCall(PSRepositoryInfo repository, NetworkCredential networkCrede
3844

3945
_sessionClient = new HttpClient(handler);
4046
_sessionClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray));
47+
4148
} else {
4249

4350
handler.Credentials = networkCredential;
4451

4552
_sessionClient = new HttpClient(handler);
4653
};
4754
_sessionClient.Timeout = TimeSpan.FromMinutes(10);
48-
4955
}
5056

5157
#endregion

src/code/Utils.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -605,6 +605,10 @@ public static PSCredential GetRepositoryCredentialFromSecretManagement(
605605
{
606606
return secretCredential;
607607
}
608+
else if (secretObject.BaseObject is SecureString secretString)
609+
{
610+
return new PSCredential("token", secretString);
611+
}
608612
}
609613

610614
cmdletPassedIn.ThrowTerminatingError(

src/code/V2ServerAPICalls.cs

Lines changed: 21 additions & 2 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;
@@ -52,9 +53,27 @@ public V2ServerAPICalls (PSRepositoryInfo repository, PSCmdlet cmdletPassedIn, N
5253
{
5354
this.Repository = repository;
5455
_cmdletPassedIn = cmdletPassedIn;
55-
HttpClientHandler handler = new HttpClientHandler()
56+
HttpClientHandler handler = new HttpClientHandler();
57+
bool token = false;
58+
59+
if(networkCredential != null)
5660
{
57-
Credentials = networkCredential
61+
token = String.Equals("token", networkCredential.UserName) ? true : false;
62+
};
63+
64+
if (token)
65+
{
66+
string credString = string.Format(":{0}", networkCredential.Password);
67+
byte[] byteArray = Encoding.ASCII.GetBytes(credString);
68+
69+
_sessionClient = new HttpClient(handler);
70+
_sessionClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray));
71+
72+
} else {
73+
74+
handler.Credentials = networkCredential;
75+
76+
_sessionClient = new HttpClient(handler);
5877
};
5978

6079
_sessionClient = new HttpClient(handler);

src/code/V3ServerAPICalls.cs

Lines changed: 22 additions & 3 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,10 +51,28 @@ 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

5978
_sessionClient = new HttpClient(handler);

0 commit comments

Comments
 (0)