Some checks failed
Build Test Deploy / docs (push) Has been cancelled
Build Test Deploy / deploy (push) Has been cancelled
Build Test Deploy / build-test (push) Has been cancelled
Build Test Deploy / authority-container (push) Has been cancelled
Docs CI / lint-and-preview (push) Has been cancelled
28 lines
1.2 KiB
Plaintext
28 lines
1.2 KiB
Plaintext
%% Rate limit and lockout interplay for Standard plug-in (Mermaid)
|
|
sequenceDiagram
|
|
autonumber
|
|
participant Client as Client/App
|
|
participant Host as Authority Host
|
|
participant Limiter as Rate Limiter Middleware
|
|
participant Plugin as Standard Plugin
|
|
participant Store as Credential Store / Lockout State
|
|
|
|
Client->>Host: POST /token (client_id, credentials)
|
|
Host->>Limiter: Check quota (client_id + remote_ip)
|
|
alt quota exceeded
|
|
Limiter-->>Host: Reject (429, retryAfter)
|
|
Host-->>Client: 429 Too Many Requests\nRetry-After header with limiter tags
|
|
else quota ok
|
|
Limiter-->>Host: Allow (remaining tokens)
|
|
Host->>Plugin: VerifyCredentials(subject)
|
|
Plugin->>Store: Load hashed password + lockout counters
|
|
Store-->>Plugin: Credential result + deterministic counter
|
|
alt lockout threshold reached
|
|
Plugin-->>Host: Locked (retryAfter=lockoutWindow)
|
|
Host-->>Client: 423 Locked\nRetry-After header + `authority.lockout` tag
|
|
else valid credentials
|
|
Plugin-->>Host: Success (issue tokens)
|
|
Host-->>Client: 200 OK + tokens + limiter metadata
|
|
end
|
|
end
|