| User / Workload | Owns one bounded domain decision, transition, or operational capability. In this design it participates in: Rate-limit login and verify credential in hardened boundary using current hash parameters. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents the external caller from also owning the contract and failure behavior of Auth Gateway. | Keep this behavior inside an adjacent service. Prefer that simpler option until independent scale, ownership, policy, or failure isolation is measurable. Here that simpler choice would couple “Credential database is stolen” to the external caller. | Costs an interface, deployment, telemetry, ownership, and failure mode. Keep it in-process first; extract when independent scale or reliability pays for the boundary. Measure the latency, saturation, lag, or mismatch at the User / Workload boundary before extracting or scaling it. |
| Auth Gateway | Owns authentication, validation, quotas, deadlines, and routing. In this design it participates in: Evaluate risk/device context and require appropriate MFA or federation assertion. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents User / Workload from also owning the contract and failure behavior of Credential Verifier. | Put protocol, authentication, quotas, and business transitions in one process. Acceptable at low scale, but it couples external traffic risk to domain releases. Here that simpler choice would couple “Refresh token is replayed” to User / Workload. | Costs another hop, policy distribution, and a high-blast-radius fleet. Introduce it when many clients or services need one protocol and protection boundary. Measure the latency, saturation, lag, or mismatch at the Auth Gateway boundary before extracting or scaling it. |
| Credential Verifier | Owns one bounded domain decision, transition, or operational capability. In this design it participates in: Create server-side session and issue short-lived signed access token plus rotated refresh token. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents Auth Gateway from also owning the contract and failure behavior of Password Hash Store. | Keep this behavior inside an adjacent service. Prefer that simpler option until independent scale, ownership, policy, or failure isolation is measurable. Here that simpler choice would couple “Revocation stream lags” to Auth Gateway. | Costs an interface, deployment, telemetry, ownership, and failure mode. Keep it in-process first; extract when independent scale or reliability pays for the boundary. Measure the latency, saturation, lag, or mismatch at the Credential Verifier boundary before extracting or scaling it. |
| Password Hash Store | Owns authoritative versioned state or immutable evidence. In this design it participates in: Services validate token locally; revocation and key updates stream to caches. | Defines the source of truth and commit boundary. It prevents Credential Verifier from also owning the contract and failure behavior of MFA Service. | Let each service persist its own interpretation. That removes one clear commit boundary and makes retries, support, and reconciliation ambiguous. Here that simpler choice would couple “Signing key must rotate immediately” to Credential Verifier. | Costs schema migration, replication, backup, and shard ownership. Split storage only when access patterns, retention, or compliance boundaries materially differ. Measure the latency, saturation, lag, or mismatch at the Password Hash Store boundary before extracting or scaling it. |
| MFA Service | Owns one bounded domain decision, transition, or operational capability. In this design it participates in: Recovery uses stronger proof, revokes existing sessions, and records immutable audit trail. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents Password Hash Store from also owning the contract and failure behavior of Risk Engine. | Keep this behavior inside an adjacent service. Prefer that simpler option until independent scale, ownership, policy, or failure isolation is measurable. Here that simpler choice would couple “Account recovery is socially engineered” to Password Hash Store. | Costs an interface, deployment, telemetry, ownership, and failure mode. Keep it in-process first; extract when independent scale or reliability pays for the boundary. Measure the latency, saturation, lag, or mismatch at the MFA Service boundary before extracting or scaling it. |
| Risk Engine | Owns one bounded domain decision, transition, or operational capability. In this design it participates in: Rate-limit login and verify credential in hardened boundary using current hash parameters. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents MFA Service from also owning the contract and failure behavior of Identity Directory. | Embed policy in every caller. Rules then drift by deployment version and emergency changes require fleet-wide redeployment. Here that simpler choice would couple “Credential database is stolen” to MFA Service. | Costs an interface, deployment, telemetry, ownership, and failure mode. Keep it in-process first; extract when independent scale or reliability pays for the boundary. Measure the latency, saturation, lag, or mismatch at the Risk Engine boundary before extracting or scaling it. |
| Identity Directory | Owns one bounded domain decision, transition, or operational capability. In this design it participates in: Evaluate risk/device context and require appropriate MFA or federation assertion. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents Risk Engine from also owning the contract and failure behavior of Session Store. | Keep this behavior inside an adjacent service. Prefer that simpler option until independent scale, ownership, policy, or failure isolation is measurable. Here that simpler choice would couple “Refresh token is replayed” to Risk Engine. | Costs an interface, deployment, telemetry, ownership, and failure mode. Keep it in-process first; extract when independent scale or reliability pays for the boundary. Measure the latency, saturation, lag, or mismatch at the Identity Directory boundary before extracting or scaling it. |
| Session Store | Owns authoritative versioned state or immutable evidence. In this design it participates in: Create server-side session and issue short-lived signed access token plus rotated refresh token. | Defines the source of truth and commit boundary. It prevents Identity Directory from also owning the contract and failure behavior of Token Signer / HSM. | Let each service persist its own interpretation. That removes one clear commit boundary and makes retries, support, and reconciliation ambiguous. Here that simpler choice would couple “Revocation stream lags” to Identity Directory. | Costs schema migration, replication, backup, and shard ownership. Split storage only when access patterns, retention, or compliance boundaries materially differ. Measure the latency, saturation, lag, or mismatch at the Session Store boundary before extracting or scaling it. |
| Token Signer / HSM | Owns one bounded domain decision, transition, or operational capability. In this design it participates in: Services validate token locally; revocation and key updates stream to caches. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents Session Store from also owning the contract and failure behavior of Refresh Service. | Keep this behavior inside an adjacent service. Prefer that simpler option until independent scale, ownership, policy, or failure isolation is measurable. Here that simpler choice would couple “Signing key must rotate immediately” to Session Store. | Costs an interface, deployment, telemetry, ownership, and failure mode. Keep it in-process first; extract when independent scale or reliability pays for the boundary. Measure the latency, saturation, lag, or mismatch at the Token Signer / HSM boundary before extracting or scaling it. |
| Refresh Service | Owns one bounded domain decision, transition, or operational capability. In this design it participates in: Recovery uses stronger proof, revokes existing sessions, and records immutable audit trail. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents Token Signer / HSM from also owning the contract and failure behavior of Revocation Stream. | Keep this behavior inside an adjacent service. Prefer that simpler option until independent scale, ownership, policy, or failure isolation is measurable. Here that simpler choice would couple “Account recovery is socially engineered” to Token Signer / HSM. | Costs an interface, deployment, telemetry, ownership, and failure mode. Keep it in-process first; extract when independent scale or reliability pays for the boundary. Measure the latency, saturation, lag, or mismatch at the Refresh Service boundary before extracting or scaling it. |
| Revocation Stream | Preserves durable ordering, replay, and consumer checkpoints. In this design it participates in: Rate-limit login and verify credential in hardened boundary using current hash parameters. | Decouples bursts and failure from user acknowledgment. It prevents Refresh Service from also owning the contract and failure behavior of Recovery Service. | Call every downstream consumer synchronously. That couples user latency and availability to analytics, notification, indexing, and audit dependencies. Here that simpler choice would couple “Credential database is stolen” to Refresh Service. | Costs eventual consistency, schema evolution, replay tooling, idempotent consumers, and lag operations. Earn it when bursts or downstream failure must not block acknowledgment. Measure the latency, saturation, lag, or mismatch at the Revocation Stream boundary before extracting or scaling it. |
| Recovery Service | Owns one bounded domain decision, transition, or operational capability. In this design it participates in: Evaluate risk/device context and require appropriate MFA or federation assertion. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents Revocation Stream from also owning the contract and failure behavior of Federation / OIDC. | Keep this behavior inside an adjacent service. Prefer that simpler option until independent scale, ownership, policy, or failure isolation is measurable. Here that simpler choice would couple “Refresh token is replayed” to Revocation Stream. | Costs an interface, deployment, telemetry, ownership, and failure mode. Keep it in-process first; extract when independent scale or reliability pays for the boundary. Measure the latency, saturation, lag, or mismatch at the Recovery Service boundary before extracting or scaling it. |
| Federation / OIDC | Owns one bounded domain decision, transition, or operational capability. In this design it participates in: Create server-side session and issue short-lived signed access token plus rotated refresh token. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents Recovery Service from also owning the contract and failure behavior of Device Trust. | Keep this behavior inside an adjacent service. Prefer that simpler option until independent scale, ownership, policy, or failure isolation is measurable. Here that simpler choice would couple “Revocation stream lags” to Recovery Service. | Costs an interface, deployment, telemetry, ownership, and failure mode. Keep it in-process first; extract when independent scale or reliability pays for the boundary. Measure the latency, saturation, lag, or mismatch at the Federation / OIDC boundary before extracting or scaling it. |
| Device Trust | Owns one bounded domain decision, transition, or operational capability. In this design it participates in: Services validate token locally; revocation and key updates stream to caches. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents Federation / OIDC from also owning the contract and failure behavior of Audit / Abuse. | Keep this behavior inside an adjacent service. Prefer that simpler option until independent scale, ownership, policy, or failure isolation is measurable. Here that simpler choice would couple “Signing key must rotate immediately” to Federation / OIDC. | Costs an interface, deployment, telemetry, ownership, and failure mode. Keep it in-process first; extract when independent scale or reliability pays for the boundary. Measure the latency, saturation, lag, or mismatch at the Device Trust boundary before extracting or scaling it. |
| Audit / Abuse | Owns one bounded domain decision, transition, or operational capability. In this design it participates in: Recovery uses stronger proof, revokes existing sessions, and records immutable audit trail. | Proves correctness and supports controlled recovery. It prevents Device Trust from also owning the contract and failure behavior of operators and repair tooling. | Infer correctness from request logs. Logs do not prove durable business state, detect silent drift, or safely repair ambiguous outcomes. Here that simpler choice would couple “Account recovery is socially engineered” to Device Trust. | Costs an interface, deployment, telemetry, ownership, and failure mode. Keep it in-process first; extract when independent scale or reliability pays for the boundary. Measure the latency, saturation, lag, or mismatch at the Audit / Abuse boundary before extracting or scaling it. |