yavsc/src/Yavsc.Org/Yavsc.Org.csproj

58 lines
3.2 KiB
XML
Raw Normal View History

2025-07-14 18:58:04 +01:00
<Project Sdk="Microsoft.NET.Sdk.Web">
2023-03-19 17:57:55 +00:00
<PropertyGroup>
2026-04-19 17:23:18 +01:00
<TargetFramework>net10.0</TargetFramework>
2023-03-19 17:57:55 +00:00
<ImplicitUsings>enable</ImplicitUsings>
2023-04-05 22:29:40 +01:00
<PackageLicenseExpression>WTFPL</PackageLicenseExpression>
2025-02-14 00:20:35 +00:00
<UserSecretsId>76e56fc2-1619-40d8-8393-365258b7a21d</UserSecretsId>
2026-02-22 23:39:56 +00:00
<RootNamespace>Yavsc</RootNamespace>
2026-05-28 22:18:26 +01:00
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
2026-05-24 20:55:29 +01:00
<RepositoryUrl>https://github.com/pazof/yavsc</RepositoryUrl>
2026-06-28 14:11:26 +01:00
<AssemblyVersion>1.0.1.0</AssemblyVersion>
<FileVersion>1.0.1.0</FileVersion>
<InformationalVersion>1.0.1-5+Branch.main.Sha.0617fc6bda7151c70559d87177e2dcfb1b60995f</InformationalVersion>
<Version>1.0.1-5</Version>
2023-03-19 17:57:55 +00:00
</PropertyGroup>
<ItemGroup>
2025-07-14 18:58:04 +01:00
<PackageReference Include="HigginsSoft.IdentityServer8" />
<PackageReference Include="HigginsSoft.IdentityServer8.AspNetIdentity" />
2025-08-24 16:07:53 +01:00
<PackageReference Include="HigginsSoft.IdentityServer8.EntityFramework" />
<PackageReference Include="HigginsSoft.IdentityServer8.EntityFramework.Storage" />
<PackageReference Include="HigginsSoft.IdentityServer8.Security" />
<PackageReference Include="HigginsSoft.IdentityServer8.Storage" />
2025-07-14 18:58:04 +01:00
<PackageReference Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" />
<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" />
<PackageReference Include="Microsoft.AspNetCore.Identity.UI" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools">
2023-04-02 14:53:31 +01:00
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
2025-07-14 18:58:04 +01:00
<PackageReference Include="Microsoft.EntityFrameworkCore.Design">
2023-04-02 14:53:31 +01:00
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
2026-05-28 22:18:26 +01:00
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" />
2026-07-11 21:56:25 +01:00
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" />
2025-07-14 18:58:04 +01:00
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" />
<PackageReference Include="Google.Apis.Compute.v1" />
<PackageReference Include="Microsoft.AspNetCore.SignalR" />
<PackageReference Include="Microsoft.AspNetCore.Razor" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" />
<PackageReference Include="System.Security.Cryptography.Pkcs" />
<PackageReference Include="Microsoft.AspNetCore.Antiforgery" />
<PackageReference Include="Swashbuckle.AspNetCore" />
<PackageReference Include="AsciiDocSharp" />
<PackageReference Include="AsciiDocSharp.Converters.Html" />
postit: trailing-slash regression + loopback browser cleanup; identityserver: BC cert loader + SecurityKey PostIt - LoginPage renders StatusMessage as a read-only TextBox so the text is mouse-selectable and copyable (no copy button). - LoginPageViewModel exposes ExternalUrl (Authentication.Authority with trailing slash stripped) and DiscoveryUrl (ExternalUrl + '/.well-known/openid-configuration'). LoginAsync surfaces the discovery URL before the call and suffixes it onto every error message, so reachability issues are diagnosable by pasting the URL into a browser. - LoopbackBrowser (used for the OIDC redirect listener on desktop) now bounds the GetContextAsync wait at 5 minutes and calls both Stop() and Close() in the finally, so the listener is always released even if the user abandons the flow. Without this, the next PostIt launch fails with 'Failed to listen on prefix http://127.0.0.1:7890/ because it conflicts with an existing registration on the machine.' - Add LoginPageViewModelTests.LoginAsync_works_when_authority_has_trailing_slash to lock in the discovery URL contract. - Add LoopbackBrowserTests covering both timeout and happy-path listener cleanup. Yavsc.Org - Drop the CustomEntries['jwks_uri'] override from commit 84160f07. IdentityServer8 reserves that key and rejects the override with 'Discovery custom entry jwks_uri cannot be added, because it already exists.' The default /.well-known/openid-configuration/jwks endpoint is what DiscoveryKeyEndpoint actually serves. - Replace X509Certificate2.CreateFromPemFile + the 3-arg X509Certificate2(path, key, X509KeyStorageFlags) ctor with a BouncyCastle-backed loader. The BCL path raised InvalidOperationException during AddSigningCredential and aborted the runtime with SIGABRT (code=6/ABRT, libcoreclr.so stack) on the production EC Let's Encrypt cert. BouncyCastle 2.6.2 PemReader accepts PKCS#1 + PKCS#8 EC/RSA PEMs uniformly; RSA path uses DotNetUtilities.ToRSA, EC path rebuilds ECDsa from ECParameters with the curve dispatched by NIST order bit length (256/384/521). - Switch the signing credential handed to IdentityServer8 from X509Certificate2 to a SigningCredentials built from a SecurityKey (RsaSecurityKey / ECDsaSecurityKey). The cert loaded fine but IdentityServer8's key material service reads cert.PrivateKey at runtime — on Linux that handle is not retained across the X509Certificate2 / runtime boundary, so CreateJwkDocumentAsync raised NullReferenceException on the first GET /jwks. The SecurityKey is a pure managed object whose Key is a live AsymmetricAlgorithm, which survives every read IdentityServer does. - Add BouncyCastle.Cryptography 2.6.2 to src/Yavsc.Org/Yavsc.Org.csproj and the matching PackageVersion in Directory.Packages props. - Wrap the loader in a try/catch that prints the full managed stack to stderr on failure, so future PEM-format issues surface in journalctl instead of being hidden behind SIGABRT.
2026-06-21 07:30:11 +01:00
<PackageReference Include="BouncyCastle.Cryptography" />
2025-07-14 18:58:04 +01:00
<PackageReference Include="Microsoft.AspNetCore.Authentication.Google" />
2025-08-18 09:22:09 +01:00
<PackageReference Include="Microsoft.Extensions.Logging" />
2026-06-18 02:18:49 +01:00
<PackageReference Include="YamlDotNet" />
2023-03-19 17:57:55 +00:00
</ItemGroup>
<ItemGroup>
2026-02-28 21:17:54 +00:00
<ProjectReference Include="../Yavsc.Server/Yavsc.Server.csproj" />
<ProjectReference Include="../Yavsc.Abstract/Yavsc.Abstract.csproj" />
2023-03-19 17:57:55 +00:00
</ItemGroup>
2026-06-28 14:11:26 +01:00
<ItemGroup>
<PackageReference Include="GitVersion.MsBuild" />
</ItemGroup>
2026-05-29 01:29:36 +01:00
</Project>