Repository navigation
IDN-05: rate limiting za prijavu i reset lozinke po IP adresi - #28
Merged
Merged
Conversation
- Imenovane politike RateLimitPolicies.Login i PasswordReset (sliding window, po IP-u; IPv6 grupisan po /64); podrazumevano 30/min (login) i 10/15min (reset), podesivo kroz okruzenje (ADM-04) uz validaciju pri startu - 429 Too Many Requests sa Retry-After, X-Correlation-ID (TraceIdentifier) i generickim telom rate_limited koje ne otkriva postojanje naloga - ForwardedHeaders prihvata X-Forwarded-For samo od proxy-ja iz KnownProxies/ KnownNetworks (ForwardLimit = 1); bez podesenog proxy-ja header se ignorise - Platform.Identity.Tests: 24 testa (limit, lazni XFF, poverljivi proxy, IPv6, MVC kontroler, logovi bez kredencijala, konfiguracija) - docs/components/identity/IDN-05.md: arhitektura, DFD, pretnje i test scenariji
Owner
|
Pregled: IDN-05 je dodeljen timu 4, kome pripada autor. U opisu pogrešno stoji TIM05 — ispraviti oznaku na Tim 4. Glavni CI prolazi, ali posebni Platform.Identity.Tests nisu uključeni u prijavljeni workflow; molimo dodajte njihov dotnet test korak u GitHub Actions i dostavite zelen rezultat pre merge-a. |
Collaborator
Author
|
Ispravljeno:
|
…dentity.Tests u SecurityLab.slnx
Owner
|
Ponovni pregled (03.11): ispravljena oznaka TIM04 i GitHub Actions backend solution testovi su zeleni. Vlasništvo IDN-05 (tim 4) je potvrđeno. PR trenutno ima merge konflikte sa novim main nakon integracije drugih timova. Molimo rešiti konflikte i ponoviti CI na ažuriranoj grani; nakon toga može na merge. |
… u Platform.RateLimiting.Tests zbog sudara imena
Collaborator
Author
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.
Component and requirement IDs
Changes
RateLimitPolicies.LoginiPasswordReset(sliding window, IPv6 grupisan po /64).Retry-After,X-Correlation-ID(HttpContext.TraceIdentifier) i generičkim telomrate_limitedkoje ne otkriva postojanje naloga.ForwardedHeaders:X-Forwarded-Forse prihvata samo od proxy-ja izKnownProxies/KnownNetworks(ForwardLimit = 1); bez podešenog proxy-ja header se ignoriše.RateLimiting__*), podrazumevano 30/min (login) i 10/15 min (reset), sa validacijom pri startu.Program.cs: 3 linije (AddIdentityRateLimiting,UseIdentityRateLimiting).UseIdentityRateLimitinguključujeUseForwardedHeadersiUseRoutingza celu aplikaciju.backend/SecurityLab.slnxnamerno nije uključen (uklonjen revert-om PR ACC-04 / ACC-08: KT1 implementacija, bezbednosni model i negativni testovi #20; testovi rade i bez njega).Verification
Lokalno 24/24 testa prolazi (1. 11. 2026). Trenutni CI samo builduje API; testovi ulaze u CI kada se zajednički
Platform.Tests(IDN-02) spoji u main.Architecture and data flow
docs/components/identity/IDN-05.md: dijagram arhitekture i DFD sa tri granice poverenja (Internet → reverse proxy → API). PlaniraniILoginAttemptLimiterje na dijagramima označen isprekidano.Security checks and negative tests
Retry-After(RequestsAboveLimitGet429WithRetryAfter)X-Forwarded-Forse ignoriše (SpoofedForwardedForFromUntrustedSourceIsIgnored,ForwardedForFromUnlistedProxyIsIgnored,ClientCannotPrependFakeAddressBehindTrustedProxy)RejectionBodyIsGenericAndStable)RejectionIsLoggedWithCorrelationIdButWithoutCredentials)Ipv6AddressesInSameSlash64ShareLimit)InvalidConfigurationStopsStartup,ApiRefusesToStartWithInvalidLimit)Kompletna tabela pretnja–kontrola–test–dokaz i scenariji po 8.1 su u
IDN-05.md.Dependencies
LoginController.Logindodati[EnableRateLimiting(RateLimitPolicies.Login)]; poziv budućegILoginAttemptLimiterizLoginAccount.[EnableRateLimiting(RateLimitPolicies.PasswordReset)]na endpointu za reset.ILoginAttemptLimiter).