Why Strong Authentication Still Fails Without Architectural Discipline
Hatched by tfc
Jul 29, 2026
9 min read
4 views
86%
The Hidden Similarity Between Login and Architecture
What do a biometric login and an enterprise software architecture have in common? More than most teams realize: both succeed only when trust is designed into the system, not bolted on afterward.
That is the deeper tension connecting passwordless authentication and serverless enterprise design. In both cases, the seductive idea is simplicity. Passwordless sign-in feels like eliminating friction. Serverless feels like eliminating infrastructure pain. But in each case, the real work does not disappear. It moves somewhere else. The question is whether you move it intentionally, or whether it reappears later as a security hole, a tangled dependency graph, or both.
The strongest systems are not the ones that remove complexity. They are the ones that relocate complexity to the right place.
A password is a brittle shared secret. A rushed serverless migration is a brittle shared architecture. Both fail for the same reason: they centralize trust in something too easy to copy, too hard to govern, and too tempting to reuse everywhere.
The Real Problem Is Not Authentication or Cloud Tools, It Is Trust Under Pressure
Most discussions about authentication focus on convenience versus security. Most discussions about serverless focus on speed versus maintainability. Those are important, but they are not the deepest issue. The real question is: where does trust live, and how is it verified when the system is under stress?
In passwordless authentication using WebAuthn, the private key never leaves the authenticator. That matters because the system no longer depends on a reusable secret stored somewhere vulnerable. Instead, it depends on a device that can prove possession of a key and confirm that the relying party matches the one used during registration. The result is not merely less friction. It is a tighter trust boundary.
Enterprise architecture faces the same dilemma. When teams move quickly into serverless without first principles, they often create a “Ball of Serverless Mud”: many small functions, events, and integrations that seem isolated but actually depend on one another in opaque ways. The system becomes distributed in shape but monolithic in behavior. It can still run, but no one can confidently explain how trust, ownership, or change propagation works.
This is why the most important architectural decisions are often invisible. A secure login flow and a healthy enterprise platform both require one thing above all: clear boundaries.
Think of it this way. A physical house key is useless if it can open any house in the neighborhood. Likewise, a serverless function is dangerous if it can trigger half the enterprise without a clear domain boundary. Good design narrows the blast radius. Bad design turns every component into a potential master key.
The most dangerous systems are not the ones that are complicated. They are the ones that are complicated in ways that nobody can explain.
That sentence applies equally to a login flow and to a cloud estate.
Passwordless Security Teaches an Architectural Lesson
WebAuthn is often sold as a better way to authenticate users, but its deeper lesson is about making trust unforgeable by construction. The private key stays inside the authenticator. The application stores only the public key and credential identifier. During authentication, the system verifies a challenge response against that stored public key, and the authenticator confirms that the relying party is the same one used during registration.
This is a brilliant design pattern because it separates what must be protected from what can be shared.
That separation is exactly what enterprise architectures need but often fail to create. Teams frequently treat all services as equally allowed to speak to each other, just through more modern mechanisms. They replace one large application with dozens of functions and events, then assume the architecture is automatically better because it is smaller in pieces. It is not. If the boundaries are unclear, the pieces still form a single fragile organism.
The WebAuthn model suggests a useful analogy: a good architecture should require every interaction to prove it belongs in that relationship. Not every service should be able to impersonate every other service. Not every event should be treated as equally trustworthy. Not every team should own the same abstraction.
This is where Domain-Driven Design becomes more than a planning exercise. Domain-first thinking is the architectural equivalent of storing the private key inside the authenticator. It ensures that the most sensitive logic stays where it belongs: close to the business meaning of the problem, not scattered through glue code.
For example, imagine an insurance company building claims processing with serverless functions. A naive design might create functions for intake, document parsing, fraud checks, notifications, payment orchestration, and status updates, all wired together through a shared event bus. It looks modular. In practice, each function starts depending on hidden assumptions about the others. Soon one change in claims validation breaks notification timing, which breaks a downstream payment rule, which creates an incident that nobody can trace end to end.
A better design begins with the domain. What is a claim? What state transitions are allowed? Which team owns which invariant? Where is the authoritative source of truth? Only after answering those questions should serverless be chosen as the implementation style.
The lesson from passwordless security is simple but profound: do not distribute trust unless you can still verify it.
The Ball of Serverless Mud Is Really a Trust Problem in Disguise
The phrase “Ball of Serverless Mud” is vivid because it captures a common failure pattern: enterprises adopt serverless for agility, then slowly lose their ability to reason about the system. Functions multiply. Events fan out. Ownership fragments. Integration logic accumulates in places nobody planned. Eventually the architecture becomes hard to test, hard to govern, and hard to change.
But this is not just a technical sprawl problem. It is a trust problem.
When teams lack a domain-first, team-first, API-first, microservices-first, and event-driven-first strategy, they end up trusting accidental structure instead of deliberate structure. They trust that the event bus will keep order. They trust that each function will remain simple. They trust that no one will need to understand the entire system. These are fragile assumptions.
A passwordless system would never accept this kind of vague trust. It insists on explicit registration, explicit credential storage, explicit challenge-response verification, and explicit relying party matching. That is what makes it secure. The architecture lesson is clear: enterprise platforms need the same rigor.
Here is a practical mental model: every distributed system has three trust questions.
- What is the identity of this actor?
- What is this actor allowed to do?
- How do we verify this claim without relying on a shared secret of convenience?
In authentication, the actor is the user and the verification is the cryptographic challenge. In enterprise architecture, the actor is a team, service, or domain boundary, and the verification is the combination of APIs, contracts, ownership, and event semantics.
When those answers are fuzzy, the organization compensates with meetings, manual checks, and brittle coordination. That is not just inefficient. It is a sign that the architecture has failed to encode trust.
A useful analogy is city planning. A city does not stay functional because every street is available to every vehicle. It works because roads have rules, districts have purposes, and infrastructure is designed around predictable movement. If you remove those boundaries in the name of flexibility, traffic does not become freer. It becomes chaotic.
Serverless can be the same way. Without clear urban planning, every function becomes a shortcut, every event becomes a side street, and every integration becomes a traffic jam you cannot see until it blocks the whole city.
A Better Principle: Design for Verifiable Boundaries
The synthesis of these ideas is not “use WebAuthn” or “be careful with serverless.” It is this: design systems so that trust can be verified at the boundary where it is exercised.
That principle scales across security and architecture.
In authentication, the boundary is the interaction between user, authenticator, and relying party. In enterprise systems, the boundary is the interaction between domain, team, API, and event. In both cases, the boundary should do real work. It should not be a decorative line on a diagram.
This suggests a more disciplined way to think about serverless adoption.
1. Start with the domain, not the deployment model
Before asking whether a function should exist, ask what business capability it belongs to. If you cannot name the domain clearly, you probably cannot split the work safely. Domain boundaries are not a luxury. They are the equivalent of the public key in a passwordless system. They define what can be trusted from the outside.
2. Make teams the owners of trust boundaries
In a healthy architecture, a team owns a domain, its APIs, and its event contracts. If every team can modify every part of the workflow, the system will drift toward shared ownership, which is often just another word for no ownership. Clear ownership is to architecture what device possession is to WebAuthn: a way of proving that the right actor is responsible.
3. Treat events as evidence, not magic
Events are powerful because they decouple systems. They are dangerous because they can also obscure causality. Every event should answer: who emitted it, from which domain, with what contract, and for what purpose? If you cannot answer those questions, the event bus is not a backbone. It is a fog machine.
4. Use APIs to expose intention, not implementation
An API should describe what a consumer is allowed to ask for, not how a service happens to be built today. This is similar to how WebAuthn exposes a challenge-response interaction without revealing the private key. The interface should reveal only what is necessary for verification.
5. Prefer small pieces only when the seams are meaningful
Small functions are not automatically simpler. They are only simpler when the seams align with meaningful boundaries. A hundred tiny functions that all depend on one another are just a distributed monolith in costume.
The goal is not smaller code. The goal is smaller trust domains.
That is the real upgrade.
Key Takeaways
- Design trust boundaries explicitly. Whether you are securing login or splitting services, do not leave identity and authorization implicit.
- Start with the domain, then choose the technology. Serverless should serve the business model, not replace it.
- Treat events and APIs as contracts, not shortcuts. Every integration should make ownership and verification obvious.
- Assume complexity will move, not disappear. The question is whether it moves into a well-defined boundary or into a hidden mess.
- Measure architecture by explainability. If a new engineer cannot understand who owns what, your trust model is already failing.
Conclusion: The Best Systems Make Trust Boring
The most elegant thing about passwordless authentication is not that it is futuristic. It is that it makes a hard problem feel ordinary. You tap a key, scan a fingerprint, or approve a prompt, and under the hood a carefully bounded cryptographic relationship does the real work. The user experiences simplicity because the system has done the discipline in advance.
That is the kind of simplicity enterprise architecture should aspire to. Not the illusion of speed, but the infrastructure of confidence.
A serverless platform that emerges from domain-first thinking can be just as elegant. Each team owns its boundary. Each service knows its purpose. Each event has meaning. Each API exposes intent. The result is not merely a system that scales technically. It is a system that scales socially, because people can still understand it.
So the deeper lesson is not about passwords or functions. It is about the design of trust itself.
The best systems do not ask you to believe harder. They make belief unnecessary by proving, at every important boundary, that the right thing is happening.
That is what strong security and strong architecture really have in common: they turn trust from a hope into a structure.
Sources
Hatch New Ideas with Glasp AI 🐣
Glasp AI allows you to hatch new ideas based on your curated content. Let's curate and create with Glasp AI :)
Start Hatching 🐣