API Gateway Platform  ·  View 21 of 21  ·  Assurance

Identity and Authorisation

The page is about the refusal, not the success.

Editable source SVG draw.io All views
Caller Proxy Credential cache Authorisation server Upstream Audit ledger 1. Bearer token, POST /v2/payouts 2. verify signature, iss, aud, exp 3. denylist + grants for jti 4. miss 5. introspect (cache refill) 6. scopes: payouts.read 7. route requires payouts.write 8. denied: insufficient_scope 9. 403 + required scope named 10. retry with correct token 11. hit, scopes sufficient 12. signed identity: tenant, app, scopes 13. 202 Accepted 14. allowed, recorded Identity and Authorisation — What Gets Refused The refusal is the point of the page: a 403 that names the scope it wanted is the difference between a support ticket and a fix. v 1.0 · owner Integration Platform Architecture · date 2026-09

The point of the page

  • A 403 that names the scope it wanted is the difference between a fix and a support ticket. The platform knows the answer; withholding it buys no security against an attacker who can enumerate anyway.
  • Both the denial and the allow are written to the audit ledger. A control that records only failures cannot answer "what did this credential do before we revoked it?".
  • Scope authorisation is per route, so a read credential cannot reach a write route even when the tenant is subscribed to the product.

Assumptions

  • Introspection is a cache refill, not a hot-path call; the cache TTL is 5 minutes (assumption).
  • Scope names are part of the published API contract and are versioned with the product.

Risks

  • Naming the required scope leaks the existence of routes a caller is not entitled to. Judged acceptable here because the API surface is published documentation; it would not be acceptable for an internal API with a confidential surface.