Skip to content

Commit 879bd0b

Browse files
committed
Upgrade to .NET 8
Signed-off-by: Victor Chang <[email protected]>
1 parent 758ccea commit 879bd0b

8 files changed

+56
-71
lines changed

global.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"sdk": {
3-
"version": "6.0.100",
3+
"version": "8.0.100",
44
"rollForward": "latestFeature"
55
}
66
}

src/Authentication/Middleware/BasicAuthorizationMiddleware.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ public async Task InvokeAsync(HttpContext httpContext)
5656
}
5757
try
5858
{
59-
var authHeader = AuthenticationHeaderValue.Parse(httpContext.Request.Headers["Authorization"]);
59+
var authHeader = AuthenticationHeaderValue.Parse(httpContext.Request.Headers.Authorization!);
6060
if (authHeader.Scheme == "Basic")
6161
{
6262
var credentialBytes = Convert.FromBase64String(authHeader.Parameter ?? "");

src/Authentication/Middleware/BypassAuthenticationHandler.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,8 @@ public class BypassAuthenticationHandler : AuthenticationHandler<AuthenticationS
2828
public BypassAuthenticationHandler(
2929
IOptionsMonitor<AuthenticationSchemeOptions> options,
3030
ILoggerFactory logger,
31-
UrlEncoder encoder,
32-
ISystemClock clock)
33-
: base(options, logger, encoder, clock)
31+
UrlEncoder encoder)
32+
: base(options, logger, encoder)
3433
{
3534
}
3635

src/Authentication/Monai.Deploy.Security.Authentication.csproj

Lines changed: 9 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,9 @@
1414
~ limitations under the License.
1515
-->
1616
<Project Sdk="Microsoft.NET.Sdk">
17-
1817
<PropertyGroup>
1918
<RootNamespace>Monai.Deploy.Security.Authentication</RootNamespace>
20-
<TargetFramework>net6.0</TargetFramework>
19+
<TargetFramework>net8.0</TargetFramework>
2120
<ImplicitUsings>enable</ImplicitUsings>
2221
<Nullable>enable</Nullable>
2322
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
@@ -26,12 +25,10 @@
2625
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
2726
<AllowedOutputExtensionsInPackageBuildOutputFolder>$(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb</AllowedOutputExtensionsInPackageBuildOutputFolder>
2827
</PropertyGroup>
29-
3028
<ItemGroup>
3129
<None Include="..\..\LICENSE" Link="LICENSE" PackagePath="" Pack="true" />
3230
<None Include="..\..\third-party-licenses.md" Link="third-party-licenses.md" PackagePath="" Pack="true" />
3331
</ItemGroup>
34-
3532
<PropertyGroup>
3633
<PackageId>Monai.Deploy.Security</PackageId>
3734
<Version>0.1.0</Version>
@@ -45,45 +42,37 @@
4542
<PackageLicenseExpression>Apache-2.0</PackageLicenseExpression>
4643
<PackageRequireLicenseAcceptance>True</PackageRequireLicenseAcceptance>
4744
</PropertyGroup>
48-
4945
<ItemGroup>
5046
<FrameworkReference Include="Microsoft.AspNetCore.App" />
5147
</ItemGroup>
52-
5348
<ItemGroup>
5449
<AdditionalFiles Include="..\.sonarlint\project-monai_monai-deploy-security\CSharp\SonarLint.xml" Link="SonarLint.xml" />
5550
</ItemGroup>
56-
5751
<ItemGroup>
5852
<Compile Include="..\AssemblyInfo.cs" Link="AssemblyInfo.cs" />
5953
</ItemGroup>
60-
6154
<ItemGroup>
6255
<Compile Remove="Tests\**" />
6356
<EmbeddedResource Remove="Tests\**" />
6457
<None Remove="Tests\**" />
6558
</ItemGroup>
66-
6759
<ItemGroup>
6860
<None Remove="example.json" />
6961
</ItemGroup>
70-
7162
<ItemGroup>
7263
<Content Include="example.json">
7364
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
7465
<ExcludeFromSingleFile>true</ExcludeFromSingleFile>
7566
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
7667
</Content>
7768
</ItemGroup>
78-
7969
<ItemGroup>
80-
<PackageReference Include="Ardalis.GuardClauses" Version="4.0.1" />
81-
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="6.0.15" />
82-
<PackageReference Include="Microsoft.Extensions.Configuration" Version="6.0.1" />
83-
<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="6.0.0" />
84-
<PackageReference Include="Microsoft.Extensions.Logging" Version="6.0.0" />
85-
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="6.0.3" />
86-
<PackageReference Include="Microsoft.Extensions.Logging.Configuration" Version="6.0.0" />
70+
<PackageReference Include="Ardalis.GuardClauses" Version="4.2.0" />
71+
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="8.0.0" />
72+
<PackageReference Include="Microsoft.Extensions.Configuration" Version="8.0.0" />
73+
<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="8.0.0" />
74+
<PackageReference Include="Microsoft.Extensions.Logging" Version="8.0.0" />
75+
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="8.0.0" />
76+
<PackageReference Include="Microsoft.Extensions.Logging.Configuration" Version="8.0.0" />
8777
</ItemGroup>
88-
89-
</Project>
78+
</Project>

src/Authentication/Tests/BasicAuthorizationMiddlewareTest.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,13 @@ public partial class BasicAuthorizationMiddlewareTest
3131
[Fact]
3232
public async Task GivenConfigurationFileToBypassAuthentication_ExpectToBypassAuthentication()
3333
{
34-
using var host = await new HostBuilder().ConfigureWebHost(SetupWebServer("test.basicbypass.json")).StartAsync().ConfigureAwait(false);
34+
using var host = await new HostBuilder().ConfigureWebHost(SetupWebServer("test.basicbypass.json")).StartAsync().ConfigureAwait(true);
3535

3636
var server = host.GetTestServer();
3737
server.BaseAddress = new Uri("https://example.com/");
3838

3939
var client = server.CreateClient();
40-
var responseMessage = await client.GetAsync("api/Test").ConfigureAwait(false);
40+
var responseMessage = await client.GetAsync("api/Test").ConfigureAwait(true);
4141

4242
Assert.True(responseMessage.IsSuccessStatusCode);
4343
}
@@ -47,43 +47,43 @@ public async Task GivenConfigurationFileToBypassAuthentication_ExpectToBypassAut
4747
[Fact]
4848
public async Task GivenConfigurationFileWithBasicConfigured_WhenUserIsNotAuthenticated_ExpectToDenyRequest()
4949
{
50-
using var host = await new HostBuilder().ConfigureWebHost(SetupWebServer("test.basic.json")).StartAsync().ConfigureAwait(false);
50+
using var host = await new HostBuilder().ConfigureWebHost(SetupWebServer("test.basic.json")).StartAsync().ConfigureAwait(true);
5151

5252
var server = host.GetTestServer();
5353
server.BaseAddress = new Uri("https://example.com/");
5454

5555
var client = server.CreateClient();
56-
var responseMessage = await client.GetAsync("api/Test").ConfigureAwait(false);
56+
var responseMessage = await client.GetAsync("api/Test").ConfigureAwait(true);
5757

5858
Assert.Equal(HttpStatusCode.Unauthorized, responseMessage.StatusCode);
5959
}
6060

6161
[Fact]
6262
public async Task GivenConfigurationFileWithBasicConfigured_WhenUserIsAuthenticated_ExpectToAllowRequest()
6363
{
64-
using var host = await new HostBuilder().ConfigureWebHost(SetupWebServer("test.basic.json")).StartAsync().ConfigureAwait(false);
64+
using var host = await new HostBuilder().ConfigureWebHost(SetupWebServer("test.basic.json")).StartAsync().ConfigureAwait(true);
6565

6666
var server = host.GetTestServer();
6767
server.BaseAddress = new Uri("https://example.com/");
6868

6969
var client = server.CreateClient();
7070
client.DefaultRequestHeaders.Add("Authorization", $"Basic {Convert.ToBase64String(Encoding.UTF8.GetBytes("user:pass"))}");
71-
var responseMessage = await client.GetAsync("api/Test").ConfigureAwait(false);
71+
var responseMessage = await client.GetAsync("api/Test").ConfigureAwait(true);
7272

7373
Assert.Equal(HttpStatusCode.OK, responseMessage.StatusCode);
7474
}
7575

7676
[Fact]
7777
public async Task GivenConfigurationFileWithBasicConfigured_WhenHeaderIsInvalid_ExpectToDenyRequest()
7878
{
79-
using var host = await new HostBuilder().ConfigureWebHost(SetupWebServer("test.basic.json")).StartAsync().ConfigureAwait(false);
79+
using var host = await new HostBuilder().ConfigureWebHost(SetupWebServer("test.basic.json")).StartAsync().ConfigureAwait(true);
8080

8181
var server = host.GetTestServer();
8282
server.BaseAddress = new Uri("https://example.com/");
8383

8484
var client = server.CreateClient();
8585
client.DefaultRequestHeaders.Add("Authorization", $"BasicBad {Convert.ToBase64String(Encoding.UTF8.GetBytes("user:pass"))}");
86-
var responseMessage = await client.GetAsync("api/Test").ConfigureAwait(false);
86+
var responseMessage = await client.GetAsync("api/Test").ConfigureAwait(true);
8787

8888
Assert.Equal(HttpStatusCode.Unauthorized, responseMessage.StatusCode);
8989
}

src/Authentication/Tests/EndpointAuthorizationMiddlewareTest.cs

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -41,34 +41,34 @@ public async Task GivenConfigurationFilesIsBad_ExpectExceptionToBeThrown(string
4141
{
4242
await Assert.ThrowsAsync<InvalidOperationException>(async () =>
4343
{
44-
using var host = await new HostBuilder().ConfigureWebHost(SetupWebServer(configFile)).StartAsync().ConfigureAwait(false);
45-
}).ConfigureAwait(false);
44+
using var host = await new HostBuilder().ConfigureWebHost(SetupWebServer(configFile)).StartAsync().ConfigureAwait(true);
45+
}).ConfigureAwait(true);
4646
}
4747

4848
[Fact]
4949
public async Task GivenConfigurationFileToBypassAuthentication_ExpectToBypassAuthentication()
5050
{
51-
using var host = await new HostBuilder().ConfigureWebHost(SetupWebServer("test.bypassd.json")).StartAsync().ConfigureAwait(false);
51+
using var host = await new HostBuilder().ConfigureWebHost(SetupWebServer("test.bypassd.json")).StartAsync().ConfigureAwait(true);
5252

5353
var server = host.GetTestServer();
5454
server.BaseAddress = new Uri("https://example.com/");
5555

5656
var client = server.CreateClient();
57-
var responseMessage = await client.GetAsync("api/Test").ConfigureAwait(false);
57+
var responseMessage = await client.GetAsync("api/Test").ConfigureAwait(true);
5858

5959
Assert.True(responseMessage.IsSuccessStatusCode);
6060
}
6161

6262
[Fact]
6363
public async Task GivenConfigurationFileWithOpenIdConfigured_WhenUserIsNotAuthenticated_ExpectToDenyRequest()
6464
{
65-
using var host = await new HostBuilder().ConfigureWebHost(SetupWebServer("test.auth.json")).StartAsync().ConfigureAwait(false);
65+
using var host = await new HostBuilder().ConfigureWebHost(SetupWebServer("test.auth.json")).StartAsync().ConfigureAwait(true);
6666

6767
var server = host.GetTestServer();
6868
server.BaseAddress = new Uri("https://example.com/");
6969

7070
var client = server.CreateClient();
71-
var responseMessage = await client.GetAsync("api/Test").ConfigureAwait(false);
71+
var responseMessage = await client.GetAsync("api/Test").ConfigureAwait(true);
7272

7373
Assert.Equal(HttpStatusCode.Unauthorized, responseMessage.StatusCode);
7474
}
@@ -78,7 +78,7 @@ public async Task GivenConfigurationFileWithOpenIdConfigured_WhenUserIsNotAuthen
7878
[InlineData("role-with-test")]
7979
public async Task GivenConfigurationFileWithOpenIdConfigured_WhenUserIsAuthenticated_ExpectToServeTheRequest(string role)
8080
{
81-
using var host = await new HostBuilder().ConfigureWebHost(SetupWebServer("test.auth.json")).StartAsync().ConfigureAwait(false);
81+
using var host = await new HostBuilder().ConfigureWebHost(SetupWebServer("test.auth.json")).StartAsync().ConfigureAwait(true);
8282

8383
var server = host.GetTestServer();
8484
server.BaseAddress = new Uri("https://example.com/");
@@ -87,11 +87,11 @@ public async Task GivenConfigurationFileWithOpenIdConfigured_WhenUserIsAuthentic
8787

8888
var client = server.CreateClient();
8989
client.DefaultRequestHeaders.Add("Authorization", $"{JwtBearerDefaults.AuthenticationScheme} {token}");
90-
var responseMessage = await client.GetAsync("api/Test").ConfigureAwait(false);
90+
var responseMessage = await client.GetAsync("api/Test").ConfigureAwait(true);
9191

9292
Assert.Equal(HttpStatusCode.OK, responseMessage.StatusCode);
9393

94-
var data = await responseMessage.Content.ReadFromJsonAsync<List<string>>().ConfigureAwait(false);
94+
var data = await responseMessage.Content.ReadFromJsonAsync<List<string>>().ConfigureAwait(true);
9595

9696
Assert.NotNull(data);
9797
Assert.Collection(data,
@@ -104,7 +104,7 @@ public async Task GivenConfigurationFileWithOpenIdConfigured_WhenUserIsAuthentic
104104
[InlineData("role-without-test")]
105105
public async Task GivenConfigurationFileWithOpenIdConfigured_WhenUserIsAuthenticatedWithoutProperRoles_ExpectToDenyRequest(string role)
106106
{
107-
using var host = await new HostBuilder().ConfigureWebHost(SetupWebServer("test.auth.json")).StartAsync().ConfigureAwait(false);
107+
using var host = await new HostBuilder().ConfigureWebHost(SetupWebServer("test.auth.json")).StartAsync().ConfigureAwait(true);
108108

109109
var server = host.GetTestServer();
110110
server.BaseAddress = new Uri("https://example.com/");
@@ -113,7 +113,7 @@ public async Task GivenConfigurationFileWithOpenIdConfigured_WhenUserIsAuthentic
113113

114114
var client = server.CreateClient();
115115
client.DefaultRequestHeaders.Add("Authorization", $"{JwtBearerDefaults.AuthenticationScheme} {token}");
116-
var responseMessage = await client.GetAsync("api/Test").ConfigureAwait(false);
116+
var responseMessage = await client.GetAsync("api/Test").ConfigureAwait(true);
117117

118118
Assert.Equal(HttpStatusCode.Forbidden, responseMessage.StatusCode);
119119
}
@@ -122,7 +122,7 @@ public async Task GivenConfigurationFileWithOpenIdConfigured_WhenUserIsAuthentic
122122
[InlineData("role-with-test")]
123123
public async Task GivenConfigurationFileWithOpenIdConfigured_WhenUserProvidesAnExpiredToken_ExpectToDenyRequest(string role)
124124
{
125-
using var host = await new HostBuilder().ConfigureWebHost(SetupWebServer("test.auth.json")).StartAsync().ConfigureAwait(false);
125+
using var host = await new HostBuilder().ConfigureWebHost(SetupWebServer("test.auth.json")).StartAsync().ConfigureAwait(true);
126126

127127
var server = host.GetTestServer();
128128
server.BaseAddress = new Uri("https://example.com/");
@@ -131,7 +131,7 @@ public async Task GivenConfigurationFileWithOpenIdConfigured_WhenUserProvidesAnE
131131

132132
var client = server.CreateClient();
133133
client.DefaultRequestHeaders.Add("Authorization", $"{JwtBearerDefaults.AuthenticationScheme} {token}");
134-
var responseMessage = await client.GetAsync("api/Test").ConfigureAwait(false);
134+
var responseMessage = await client.GetAsync("api/Test").ConfigureAwait(true);
135135

136136
Assert.Equal(HttpStatusCode.Unauthorized, responseMessage.StatusCode);
137137
}
@@ -140,43 +140,43 @@ public async Task GivenConfigurationFileWithOpenIdConfigured_WhenUserProvidesAnE
140140
[Fact]
141141
public async Task GivenConfigurationFileWithBasicConfigured_WhenUserIsNotAuthenticated_ExpectToDenyRequest()
142142
{
143-
using var host = await new HostBuilder().ConfigureWebHost(SetupWebServer("test.basic.json")).StartAsync().ConfigureAwait(false);
143+
using var host = await new HostBuilder().ConfigureWebHost(SetupWebServer("test.basic.json")).StartAsync().ConfigureAwait(true);
144144

145145
var server = host.GetTestServer();
146146
server.BaseAddress = new Uri("https://example.com/");
147147

148148
var client = server.CreateClient();
149-
var responseMessage = await client.GetAsync("api/Test").ConfigureAwait(false);
149+
var responseMessage = await client.GetAsync("api/Test").ConfigureAwait(true);
150150

151151
Assert.Equal(HttpStatusCode.Unauthorized, responseMessage.StatusCode);
152152
}
153153

154154
[Fact]
155155
public async Task GivenConfigurationFileWithBasicConfigured_WhenUserIsAuthenticated_ExpectToAllowRequest()
156156
{
157-
using var host = await new HostBuilder().ConfigureWebHost(SetupWebServer("test.basic.json")).StartAsync().ConfigureAwait(false);
157+
using var host = await new HostBuilder().ConfigureWebHost(SetupWebServer("test.basic.json")).StartAsync().ConfigureAwait(true);
158158

159159
var server = host.GetTestServer();
160160
server.BaseAddress = new Uri("https://example.com/");
161161

162162
var client = server.CreateClient();
163163
client.DefaultRequestHeaders.Add("Authorization", $"Basic {Convert.ToBase64String(Encoding.UTF8.GetBytes("user:pass"))}");
164-
var responseMessage = await client.GetAsync("api/Test").ConfigureAwait(false);
164+
var responseMessage = await client.GetAsync("api/Test").ConfigureAwait(true);
165165

166166
Assert.Equal(HttpStatusCode.OK, responseMessage.StatusCode);
167167
}
168168

169169
[Fact]
170170
public async Task GivenConfigurationFileWithBasicConfigured_WhenHeaderIsInvalid_ExpectToDenyRequest()
171171
{
172-
using var host = await new HostBuilder().ConfigureWebHost(SetupWebServer("test.basic.json")).StartAsync().ConfigureAwait(false);
172+
using var host = await new HostBuilder().ConfigureWebHost(SetupWebServer("test.basic.json")).StartAsync().ConfigureAwait(true);
173173

174174
var server = host.GetTestServer();
175175
server.BaseAddress = new Uri("https://example.com/");
176176

177177
var client = server.CreateClient();
178178
client.DefaultRequestHeaders.Add("Authorization", $"BasicBad {Convert.ToBase64String(Encoding.UTF8.GetBytes("user:pass"))}");
179-
var responseMessage = await client.GetAsync("api/Test").ConfigureAwait(false);
179+
var responseMessage = await client.GetAsync("api/Test").ConfigureAwait(true);
180180

181181
Assert.Equal(HttpStatusCode.Unauthorized, responseMessage.StatusCode);
182182
}

src/Authentication/Tests/Monai.Deploy.Security.Authentication.Tests.csproj

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -14,34 +14,29 @@
1414
~ limitations under the License.
1515
-->
1616
<Project Sdk="Microsoft.NET.Sdk.Web">
17-
1817
<PropertyGroup>
19-
<TargetFramework>net6.0</TargetFramework>
18+
<TargetFramework>net8.0</TargetFramework>
2019
<ImplicitUsings>enable</ImplicitUsings>
2120
<Nullable>enable</Nullable>
22-
2321
<IsPackable>false</IsPackable>
2422
</PropertyGroup>
25-
2623
<ItemGroup>
27-
<PackageReference Include="Microsoft.AspNetCore.TestHost" Version="6.0.15" />
28-
<PackageReference Include="Microsoft.Extensions.Hosting" Version="6.0.1" />
29-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.7.2" />
30-
<PackageReference Include="xunit" Version="2.4.2" />
31-
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.5">
24+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
25+
<PackageReference Include="xunit" Version="2.6.3" />
26+
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.5">
3227
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
3328
<PrivateAssets>all</PrivateAssets>
3429
</PackageReference>
35-
<PackageReference Include="coverlet.collector" Version="3.2.0">
30+
<PackageReference Include="coverlet.collector" Version="6.0.0">
3631
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
3732
<PrivateAssets>all</PrivateAssets>
3833
</PackageReference>
34+
<PackageReference Include="Microsoft.AspNetCore.TestHost" Version="8.0.0" />
35+
<PackageReference Include="Microsoft.Extensions.Hosting" Version="8.0.0" />
3936
</ItemGroup>
40-
4137
<ItemGroup>
4238
<ProjectReference Include="..\Monai.Deploy.Security.Authentication.csproj" />
4339
</ItemGroup>
44-
4540
<ItemGroup>
4641
<None Update="test.auth.json">
4742
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
@@ -56,7 +51,9 @@
5651
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
5752
</None>
5853
</ItemGroup>
59-
60-
<ProjectExtensions><VisualStudio><UserProperties test_1basic_1json__JsonSchema="BasicAuthorizationMiddlewareTestBasicAuthorizationMiddlewareTestBasicAuthorizationMiddlewareTest" /></VisualStudio></ProjectExtensions>
61-
62-
</Project>
54+
<ProjectExtensions>
55+
<VisualStudio>
56+
<UserProperties test_1basic_1json__JsonSchema="BasicAuthorizationMiddlewareTestBasicAuthorizationMiddlewareTestBasicAuthorizationMiddlewareTest" />
57+
</VisualStudio>
58+
</ProjectExtensions>
59+
</Project>

0 commit comments

Comments
 (0)