* Refactor OidcTokenProvider to remove dependency on IdentityModel and improve token handling * Improve OidcTokenProvider error handling and expiry setting The constructor `OidcTokenProvider` now always sets the `_expiry` field by calling `GetExpiryFromToken()`, regardless of whether `_idToken` is null or empty, removing the previous check for a non-empty `_idToken`. The `GetExpiryFromToken` method has been updated to handle invalid JWT token formats more gracefully. Instead of throwing an `ArgumentException` when the token format is invalid or when the 'exp' claim is missing, the method now returns a default value. The logic for parsing the JWT token and extracting the 'exp' claim has been wrapped in a try-catch block. If any exception occurs during this process, it is caught, and the method returns a default value instead of throwing an exception. * Refactor parts initialization inside try block Moved the initialization of the `parts` variable, which splits the `_idToken` string, inside the `try` block. Removed the previous check for exactly three elements in the `parts` array and the default return value if the check failed. * Add tests. --------- Co-authored-by: Boshi Lian <farmer1992@gmail.com>
39 lines
1.4 KiB
XML
39 lines
1.4 KiB
XML
<Project Sdk="Microsoft.NET.Sdk.Web">
|
|
<PropertyGroup>
|
|
<IsPackable>false</IsPackable>
|
|
<RootNamespace>k8s.Tests</RootNamespace>
|
|
<TargetFrameworks>net8.0;net9.0</TargetFrameworks>
|
|
</PropertyGroup>
|
|
|
|
<ItemGroup>
|
|
<PackageReference Include="MartinCostello.Logging.XUnit" />
|
|
<PackageReference Include="FluentAssertions" />
|
|
<PackageReference Include="Microsoft.Extensions.Logging" />
|
|
<PackageReference Include="System.IO.Abstractions.TestingHelpers" />
|
|
<PackageReference Include="System.Reactive" />
|
|
<PackageReference Include="Nito.AsyncEx" />
|
|
<PackageReference Include="Portable.BouncyCastle" />
|
|
<PackageReference Include="Wiremock.Net" />
|
|
</ItemGroup>
|
|
|
|
<ItemGroup>
|
|
|
|
<PackageReference Include="Microsoft.NET.Test.Sdk" />
|
|
<PackageReference Include="xunit" />
|
|
<PackageReference Include="xunit.runner.visualstudio">
|
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
|
</PackageReference>
|
|
<PackageReference Include="Xunit.StaFact" />
|
|
<PackageReference Include="Moq" />
|
|
</ItemGroup>
|
|
|
|
<ItemGroup>
|
|
<None Include="assets/*" CopyToOutputDirectory="Always" />
|
|
</ItemGroup>
|
|
|
|
<ItemGroup>
|
|
<ProjectReference Include="..\..\src\KubernetesClient\KubernetesClient.csproj" />
|
|
<ProjectReference Include="..\..\src\KubernetesClient.ModelConverter\KubernetesClient.ModelConverter.csproj" />
|
|
</ItemGroup>
|
|
</Project>
|