Feat/rate limit redis backend 429 UI - #461
Open
kuse-design wants to merge 2 commits into
Open
Conversation
Add an IssuerSigner interface in frontend/lib/signer.ts with two implementations: - EnvSigner: signs with a local secp256k1 private key (dev/mock only) - KmsSigner: delegates to AWS KMS via Sign(KeyId, Digest) — the raw private key never enters the Node.js process Selected via ISSUER_SIGNER=env|kms env var (defaults to env for local dev). KMS returns a DER signature which is converted to the raw (r,s) 64-byte form Noir expects. prehash: false semantics are preserved via KMS MessageType=DIGEST. The @stellarcred/issuer IssuerClient now accepts an IssuerSigner option alongside the legacy privateKey path, so existing code keeps working unchanged. Security notes documented in SECURITY.md. Generated with Codebuff 🤖 Co-Authored-By: Codebuff <noreply@codebuff.com>
… limiting - Add RATELIMIT_BACKEND env var (memory|redis) for selecting rate-limit backend. Memory works with no external dependency for local dev; Redis (Upstash) enables shared counters for serverless/multi-replica deploys. - Add separate wallet window (RATE_LIMIT_ISSUE_WALLET_WINDOW_SECONDS, default 3600s = 1 hour) vs IP window (default 60s = 1 minute) so the per-wallet limit has a longer horizon as intended. - Frontend /verify page now detects 429 responses and shows a friendly "try again in N seconds" message instead of a generic error. - Add tests for LIMITS.walletWindowMs, LIMITS.backend(), and 429 handling in the verify flow. - Document RATELIMIT_BACKEND, RATE_LIMIT_REDIS_URL, and RATE_LIMIT_ISSUE_WALLET_WINDOW_SECONDS in .env.example. - pnpm tsc --noEmit and pnpm build both pass. Generated with Codebuff 🤖 Co-Authored-By: Codebuff <noreply@codebuff.com>
|
@kuse-design Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits. You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What does this PR do?
Closes #
Type of change
Merge requirements
cargo test(contracts),pnpm tsc --noEmit(frontend),pnpm build(frontend), circuit tests — all greenfixtures/<type>/artifacts updatedNEXT_PUBLIC_prefix on server-only env varsprehash:falsepreserved on any issuer signing path touched✅ Merge requirements
closes #70