Skip to content

Commit d9dfe07

Browse files
authored
Merge pull request #15 from ITfoxtec/Development
Support .NET 6.0.
2 parents df66df7 + 3d2d181 commit d9dfe07

File tree

5 files changed

+57
-48
lines changed

5 files changed

+57
-48
lines changed

samples/BlazorWAOidcSample.Client/BlazorWAOidcSample.Client.csproj

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
<Project Sdk="Microsoft.NET.Sdk.BlazorWebAssembly">
22

33
<PropertyGroup>
4-
<TargetFramework>net5.0</TargetFramework>
4+
<TargetFramework>net6.0</TargetFramework>
55
<AssemblyName>BlazorWebAssemblyOidcSample.Client</AssemblyName>
66
<RootNamespace>BlazorWebAssemblyOidcSample.Client</RootNamespace>
77
</PropertyGroup>
88

99
<ItemGroup>
10-
<PackageReference Include="Microsoft.AspNetCore.Components.Authorization" Version="5.0.9" />
11-
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="5.0.9" />
12-
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="5.0.9" PrivateAssets="all" />
13-
<PackageReference Include="System.Net.Http.Json" Version="5.0.0" />
10+
<PackageReference Include="Microsoft.AspNetCore.Components.Authorization" Version="6.0.1" />
11+
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="6.0.1" />
12+
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="6.0.1" PrivateAssets="all" />
13+
<PackageReference Include="System.Net.Http.Json" Version="6.0.0" />
1414
</ItemGroup>
1515

1616
<ItemGroup>

samples/BlazorWAOidcSample.Server/BlazorWAOidcSample.Server.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
<Project Sdk="Microsoft.NET.Sdk.Web">
22

33
<PropertyGroup>
4-
<TargetFramework>net5.0</TargetFramework>
4+
<TargetFramework>net6.0</TargetFramework>
55
<AssemblyName>BlazorWebAssemblyOidcSample.Server</AssemblyName>
66
<RootNamespace>BlazorWebAssemblyOidcSample.Server</RootNamespace>
77
</PropertyGroup>
88

99
<ItemGroup>
10-
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="5.0.9" />
11-
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="5.0.9" />
10+
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="6.0.1" />
11+
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="6.0.1" />
1212
</ItemGroup>
1313

1414
<ItemGroup>

samples/BlazorWAOidcSample.Shared/BlazorWAOidcSample.Shared.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<TargetFramework>net5.0</TargetFramework>
4+
<TargetFramework>net6.0</TargetFramework>
55
<AssemblyName>BlazorWebAssemblyOidcSample.Shared</AssemblyName>
66
<RootNamespace>BlazorWebAssemblyOidcSample.Shared</RootNamespace>
77
</PropertyGroup>

src/ITfoxtec.Identity.BlazorWA.Oidc/ITfoxtec.Identity.BlazorWA.Oidc.csproj

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
<Project Sdk="Microsoft.NET.Sdk.Razor">
22

33
<PropertyGroup>
4-
<TargetFrameworks>net5.0;netstandard2.1</TargetFrameworks>
4+
<TargetFrameworks>net6.0;net5.0;netstandard2.1</TargetFrameworks>
55
<AssemblyName>ITfoxtec.Identity.BlazorWebAssembly.OpenidConnect</AssemblyName>
66
<RootNamespace>ITfoxtec.Identity.BlazorWebAssembly.OpenidConnect</RootNamespace>
77

88
<Authors>Anders Revsgaard</Authors>
99
<Company>ITfoxtec</Company>
1010
<Description>A JavaScript free OpenID Connect PKCE library for Blazor WebAssembly.
1111

12+
Support .NET 6.0
1213
Support .NET 5.0
1314
Support .NET Standard 2.0
1415

@@ -21,16 +22,34 @@ The component automatically handle token / session update with use of the refres
2122
<PackageTags>Blazor WebAssembly OpenID Connect (OIDC) Proof Key for Code Exchange (PKCE) id token access token refresh token</PackageTags>
2223
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
2324
<Copyright>© 2020 ITfoxtec</Copyright>
24-
<AssemblyVersion>1.5.1.0</AssemblyVersion>
25-
<FileVersion>1.5.1.0</FileVersion>
26-
<Version>1.5.1</Version>
25+
<AssemblyVersion>1.6.2.0</AssemblyVersion>
26+
<FileVersion>1.6.2.0</FileVersion>
27+
<Version>1.6.2</Version>
2728
</PropertyGroup>
2829

2930
<ItemGroup>
30-
<PackageReference Include="Blazored.SessionStorage" Version="2.1.0" />
31-
<PackageReference Include="ITfoxtec.Identity" Version="2.3.1" />
31+
<PackageReference Include="Blazored.SessionStorage" Version="2.2.0" />
32+
<PackageReference Include="ITfoxtec.Identity" Version="2.5.2" />
3233
</ItemGroup>
3334

35+
<ItemGroup Condition=" '$(TargetFramework)' == 'net6.0'">
36+
<PackageReference Include="Microsoft.AspNetCore.Components" Version="6.0.1" />
37+
<PackageReference Include="Microsoft.AspNetCore.Components.Web" Version="6.0.1" />
38+
</ItemGroup>
39+
<PropertyGroup Condition=" '$(TargetFramework)' == 'net6.0'">
40+
<DefineConstants>NET60;NET</DefineConstants>
41+
</PropertyGroup>
42+
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Release|net6.0|AnyCPU'">
43+
<DebugType>pdbonly</DebugType>
44+
<DebugSymbols>true</DebugSymbols>
45+
<GenerateDocumentationFile>true</GenerateDocumentationFile>
46+
<NoWarn>$(NoWarn);1591;1573</NoWarn>
47+
</PropertyGroup>
48+
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Debug|net6.0|AnyCPU'">
49+
<GenerateDocumentationFile>true</GenerateDocumentationFile>
50+
<NoWarn>$(NoWarn);1591;1573</NoWarn>
51+
</PropertyGroup>
52+
3453
<ItemGroup Condition=" '$(TargetFramework)' == 'net5.0'">
3554
<PackageReference Include="Microsoft.AspNetCore.Components" Version="5.0.9" />
3655
<PackageReference Include="Microsoft.AspNetCore.Components.Web" Version="5.0.9" />

src/ITfoxtec.Identity.BlazorWA.Oidc/OpenidConnectPkce.cs

Lines changed: 23 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
using Blazored.SessionStorage;
22
using ITfoxtec.Identity.Discovery;
3-
using ITfoxtec.Identity.Models;
43
using ITfoxtec.Identity.Messages;
54
using ITfoxtec.Identity.Tokens;
65
using ITfoxtec.Identity.Util;
@@ -162,18 +161,13 @@ public async Task LoginCallBackAsync(string responseUrl)
162161
if (tokenResponse.AccessToken.IsNullOrEmpty()) throw new ArgumentNullException(nameof(tokenResponse.AccessToken), tokenResponse.GetTypeName());
163162
if (tokenResponse.ExpiresIn <= 0) throw new ArgumentNullException(nameof(tokenResponse.ExpiresIn), tokenResponse.GetTypeName());
164163

165-
var oidcDiscoveryKeySet = await GetOidcDiscoveryKeysAsync(openidClientPkceState.OidcDiscoveryUri);
164+
//var oidcDiscoveryKeySet = await GetOidcDiscoveryKeysAsync(openidClientPkceState.OidcDiscoveryUri);
166165

167-
// .NET 5.0 error, System.Security.Cryptography.RSA.Create() - System.PlatformNotSupportedException: System.Security.Cryptography.Algorithms is not supported on this platform.
168-
// https://github.com/dotnet/aspnetcore/issues/26123
169-
// https://github.com/dotnet/runtime/issues/40074
166+
//(var idTokenPrincipal, _) = JwtHandler.ValidateToken(tokenResponse.IdToken, oidcDiscovery.Issuer, oidcDiscoveryKeySet.Keys.ToMSJsonWebKeys(), openidClientPkceState.ClientId,
167+
// nameClaimType: globalOpenidClientPkceSettings.NameClaimType, roleClaimType: globalOpenidClientPkceSettings.RoleClaimType);
168+
// Changed to only read ID token and not do validation
170169

171-
(var idTokenPrincipal, _) = JwtHandler.ValidateToken(tokenResponse.IdToken, oidcDiscovery.Issuer, oidcDiscoveryKeySet.Keys.ToMSJsonWebKeys(), openidClientPkceState.ClientId,
172-
nameClaimType: globalOpenidClientPkceSettings.NameClaimType, roleClaimType: globalOpenidClientPkceSettings.RoleClaimType
173-
#if NET50
174-
, validateSigningKey: false
175-
#endif
176-
);
170+
var idTokenPrincipal = JwtHandler.ReadTokenClaims(tokenResponse.IdToken);
177171

178172
var nonce = idTokenPrincipal.Claims.Where(c => c.Type == JwtClaimTypes.Nonce).Select(c => c.Value).FirstOrDefault();
179173
if (!openidClientPkceState.Nonce.Equals(nonce, StringComparison.Ordinal))
@@ -234,18 +228,13 @@ public async Task<OidcUserSession> HandleRefreshTokenAsync(OidcUserSession userS
234228
if (tokenResponse.AccessToken.IsNullOrEmpty()) throw new ArgumentNullException(nameof(tokenResponse.AccessToken), tokenResponse.GetTypeName());
235229
if (tokenResponse.ExpiresIn <= 0) throw new ArgumentNullException(nameof(tokenResponse.ExpiresIn), tokenResponse.GetTypeName());
236230

237-
var oidcDiscoveryKeySet = await GetOidcDiscoveryKeysAsync(oidcDiscoveryUri);
231+
//var oidcDiscoveryKeySet = await GetOidcDiscoveryKeysAsync(oidcDiscoveryUri);
238232

239-
// .NET 5.0 error, System.Security.Cryptography.RSA.Create() - System.PlatformNotSupportedException: System.Security.Cryptography.Algorithms is not supported on this platform.
240-
// https://github.com/dotnet/aspnetcore/issues/26123
241-
// https://github.com/dotnet/runtime/issues/40074
233+
//(var idTokenPrincipal, _) = JwtHandler.ValidateToken(tokenResponse.IdToken, oidcDiscovery.Issuer, oidcDiscoveryKeySet.Keys, clientId,
234+
// nameClaimType: globalOpenidClientPkceSettings.NameClaimType, roleClaimType: globalOpenidClientPkceSettings.RoleClaimType);
235+
// Changed to only read ID token and not do validation
242236

243-
(var idTokenPrincipal, _) = JwtHandler.ValidateToken(tokenResponse.IdToken, oidcDiscovery.Issuer, oidcDiscoveryKeySet.Keys, clientId,
244-
nameClaimType: globalOpenidClientPkceSettings.NameClaimType, roleClaimType: globalOpenidClientPkceSettings.RoleClaimType
245-
#if NET50
246-
, validateSigningKey: false
247-
#endif
248-
);
237+
var idTokenPrincipal = JwtHandler.ReadTokenClaims(tokenResponse.IdToken);
249238

250239
if (!subject.IsNullOrEmpty() && subject != idTokenPrincipal.Claims.Where(c => c.Type == globalOpenidClientPkceSettings.NameClaimType).Single().Value)
251240
{
@@ -364,18 +353,19 @@ private async Task<OidcDiscovery> GetOidcDiscoveryAsync(string oidcDiscoveryUri)
364353
}
365354
}
366355

367-
private async Task<JsonWebKeySet> GetOidcDiscoveryKeysAsync(string oidcDiscoveryUri)
368-
{
369-
try
370-
{
371-
var oidcDiscoveryHandler = serviceProvider.GetService<OidcDiscoveryHandler>();
372-
return await oidcDiscoveryHandler.GetOidcDiscoveryKeysAsync(oidcDiscoveryUri);
373-
}
374-
catch (Exception ex)
375-
{
376-
throw new Exception($"Failed to fetch OIDC Discovery Keys from discovery '{oidcDiscoveryUri}'.", ex);
377-
}
378-
}
356+
// Changed to only read ID token and not do validation
357+
//private async Task<JsonWebKeySet> GetOidcDiscoveryKeysAsync(string oidcDiscoveryUri)
358+
//{
359+
// try
360+
// {
361+
// var oidcDiscoveryHandler = serviceProvider.GetService<OidcDiscoveryHandler>();
362+
// return await oidcDiscoveryHandler.GetOidcDiscoveryKeysAsync(oidcDiscoveryUri);
363+
// }
364+
// catch (Exception ex)
365+
// {
366+
// throw new Exception($"Failed to fetch OIDC Discovery Keys from discovery '{oidcDiscoveryUri}'.", ex);
367+
// }
368+
//}
379369

380370
private async Task<string> SaveStateAsync(OpenidConnectPkceSettings openidConnectPkceSettings, string callBackUri, string redirectUri, string codeVerifier = null, string nonce = null)
381371
{

0 commit comments

Comments
 (0)