The Altcha authorization check, plugged into the ICommandAuthorizationCheck / IQueryAuthorizationCheck seam. Behavior - Self-applies: returns Allowed for any request whose type isn't decorated with [Altcha]. No-op for the 99% of endpoints that don't need PoW. - Reads ctx.Items["mobile_attested"] for Phase 3 bypass when the attribute's AllowMobileAttestationBypass is true. - Pulls the solution off the request via IHasAltchaSolution and delegates verification to IAltchaVerifier (resolved per-call from the request scope, so any verifier lifetime works). - Stashes a diagnostic reason in ctx.Items["altcha_reason"] (missing / misconfigured / invalid / replayed / expired / etc.) for downstream middleware to surface in error responses. - Singleton itself — stateless; one instance shared via factory registrations under both check interfaces. AddSvrntyAltcha() registers the check. The verifier is provided by a transport-specific module (e.g. Svrnty.CQRS.Altcha.Grpc, next). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
40 lines
1.6 KiB
XML
40 lines
1.6 KiB
XML
<Project Sdk="Microsoft.NET.Sdk">
|
|
<PropertyGroup>
|
|
<TargetFramework>net10.0</TargetFramework>
|
|
<IsAotCompatible>true</IsAotCompatible>
|
|
<LangVersion>14</LangVersion>
|
|
<Nullable>enable</Nullable>
|
|
<ImplicitUsings>enable</ImplicitUsings>
|
|
|
|
<Company>Svrnty</Company>
|
|
<Authors>David Lebee, Mathias Beaulieu-Duncan</Authors>
|
|
<PackageIcon>icon.png</PackageIcon>
|
|
<PackageReadmeFile>README.md</PackageReadmeFile>
|
|
<RepositoryUrl>https://git.openharbor.io/svrnty/dotnet-cqrs</RepositoryUrl>
|
|
<RepositoryType>git</RepositoryType>
|
|
<PublishRepositoryUrl>true</PublishRepositoryUrl>
|
|
<PackageLicenseExpression>MIT</PackageLicenseExpression>
|
|
|
|
<DebugType>portable</DebugType>
|
|
<DebugSymbols>true</DebugSymbols>
|
|
<IncludeSymbols>true</IncludeSymbols>
|
|
<IncludeSource>true</IncludeSource>
|
|
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
|
|
</PropertyGroup>
|
|
|
|
<ItemGroup>
|
|
<None Include="..\icon.png" Pack="true" PackagePath="" CopyToOutputDirectory="Always" />
|
|
<None Include="..\README.md" Pack="true" PackagePath="" CopyToOutputDirectory="Always" />
|
|
</ItemGroup>
|
|
|
|
<ItemGroup>
|
|
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="10.0.0" />
|
|
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="10.0.0" />
|
|
</ItemGroup>
|
|
|
|
<ItemGroup>
|
|
<ProjectReference Include="..\Svrnty.CQRS.Abstractions\Svrnty.CQRS.Abstractions.csproj" />
|
|
<ProjectReference Include="..\Svrnty.CQRS.Altcha.Abstractions\Svrnty.CQRS.Altcha.Abstractions.csproj" />
|
|
</ItemGroup>
|
|
</Project>
|