Abstractions for the Altcha-based proof-of-work module: - AltchaAttribute (AllowMobileAttestationBypass param) - IHasAltchaSolution — marker interface for request POCOs carrying the widget's solution payload over HTTP/gRPC transports - IAltchaVerifier / IAltchaChallengeProvider — transport-agnostic interfaces; default gRPC implementations ship in Svrnty.CQRS.Altcha.Grpc - IMobileAttestationProvider — Phase 3 placeholder; concrete impls stamp ctx.Items["mobile_attested"] for the Altcha check to read as a bypass when AllowMobileAttestationBypass is true - AltchaChallenge / AltchaVerifyResult DTOs Lean dependencies — only references Svrnty.CQRS.Abstractions for the auth-check pipeline types. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
19 lines
781 B
C#
19 lines
781 B
C#
namespace Svrnty.CQRS.Altcha.Abstractions;
|
|
|
|
/// <summary>
|
|
/// Verifies an Altcha solution payload. The default implementation in
|
|
/// <c>Svrnty.CQRS.Altcha.Grpc</c> talks to a self-hosted altcha service
|
|
/// over gRPC; consumers may register their own implementation (e.g. an
|
|
/// in-process variant or a different transport) and the
|
|
/// <see cref="ICommandAuthorizationCheck"/>-based pipeline picks it up
|
|
/// automatically.
|
|
/// </summary>
|
|
public interface IAltchaVerifier
|
|
{
|
|
/// <param name="payload">
|
|
/// Base64-encoded JSON payload produced by the Altcha widget — the same
|
|
/// string carried on <see cref="IHasAltchaSolution.AltchaSolution"/>.
|
|
/// </param>
|
|
Task<AltchaVerifyResult> VerifyAsync(string payload, CancellationToken cancellationToken = default);
|
|
}
|