<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Luis Gustavo Lauermann Hartmann</title>
    <description>The latest articles on DEV Community by Luis Gustavo Lauermann Hartmann (@luis_hartmann).</description>
    <link>https://dev.to/luis_hartmann</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3783966%2Faa80be8b-8669-4def-939d-e30ba7a540f2.jpeg</url>
      <title>DEV Community: Luis Gustavo Lauermann Hartmann</title>
      <link>https://dev.to/luis_hartmann</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/luis_hartmann"/>
    <language>en</language>
    <item>
      <title>Chapter 1  -  The Problem: Authorization in Microservices Is Still Too Coupled</title>
      <dc:creator>Luis Gustavo Lauermann Hartmann</dc:creator>
      <pubDate>Sat, 21 Feb 2026 15:48:19 +0000</pubDate>
      <link>https://dev.to/luis_hartmann/chapter-1-the-problem-authorization-in-microservices-is-still-too-coupled-19ei</link>
      <guid>https://dev.to/luis_hartmann/chapter-1-the-problem-authorization-in-microservices-is-still-too-coupled-19ei</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Disclaimer&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This article series is the result of a collaboration between &lt;a class="mentioned-user" href="https://dev.to/dominikpollok"&gt;@dominikpollok&lt;/a&gt; (co-student), &lt;a class="mentioned-user" href="https://dev.to/dboschert"&gt;@dboschert&lt;/a&gt; (Master’s student currently writing his thesis) and me.&lt;/p&gt;

&lt;p&gt;The project was carried out under the supervision of the Cooperation and Management (C&amp;amp;M) research group at KIT. However, the perspectives and interpretations presented in this series reflect solely those of the involved students and do not necessarily represent the official views of C&amp;amp;M.&lt;/p&gt;

&lt;p&gt;The related Master’s thesis will be referenced here once it has been completed.&lt;/p&gt;

&lt;p&gt;All articles are written manually. An LLM is used exclusively for syntactic refinement and readability improvements.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The Security Trade-Off of Microservices
&lt;/h2&gt;

&lt;p&gt;Among the many promised benefits of migrating from monolithic applications to microservices — scalability, independent deployability, and team autonomy — one challenge is often underestimated:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Securing many decoupled services is significantly harder than securing a single application.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Enterprise environments are already complex. Internal governance policies, client requirements, regulatory compliance, and security standards impose strict constraints on system design. When such constraints meet distributed architectures, complexity increases rapidly.&lt;/p&gt;

&lt;p&gt;To cope with these demands, organizations frequently develop customized security solutions — including self-designed authorization protocols and, in some cases, even self-built authentication mechanisms.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Custom solutions may solve immediate problems, but they often slow down long-term change and innovation.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Authentication vs. Authorization — Still Confused in Practice
&lt;/h2&gt;

&lt;p&gt;Two of the most fundamental concepts in IT security are authentication and authorization.&lt;/p&gt;

&lt;p&gt;Authentication verifies a principal’s asserted identity or attributes.&lt;/p&gt;

&lt;p&gt;Authorization determines whether an authenticated subject may perform a specific action on a resource under defined policies and contextual constraints.&lt;/p&gt;

&lt;p&gt;These concepts are distinct — yet tightly coupled.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Authentication&lt;/strong&gt; answers:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Who are you?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Authorization&lt;/strong&gt; answers:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Given who you are, what are you allowed to do?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The coupling between authentication and authorization lies in trust.&lt;/p&gt;

&lt;p&gt;Authorization decisions are made based on attributes — identity, roles, permissions, contextual properties. But those attributes must be trustworthy. Authentication provides that trust foundation.&lt;/p&gt;

&lt;p&gt;If authorization were performed on unauthenticated or unverifiable claims, a subject could simply assert arbitrary roles or privileges. In such a system, policy evaluation would become meaningless, because the inputs to the decision process would not be reliable.&lt;/p&gt;

&lt;p&gt;In other words:&lt;/p&gt;

&lt;p&gt;Authentication establishes confidence in who (or what) is making the request.&lt;/p&gt;

&lt;p&gt;Authorization evaluates what that authenticated principal may do.&lt;/p&gt;

&lt;p&gt;Authorization without authentication reduces policy enforcement to accepting self-declared privileges.&lt;/p&gt;

&lt;p&gt;Despite this conceptual clarity, many systems blur the boundaries in implementation.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Common Anti-Pattern: Security Logic Inside Services
&lt;/h2&gt;

&lt;p&gt;In practice, services often implement both authentication and authorization directly in application code. For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Verifying identity tokens in middleware or even inside MVC controllers&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Performing hardcoded role checks inside business logic&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Even when organizations rely on external IAM providers — which is generally advisable — services frequently:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enforce authentication at the application layer&lt;/li&gt;
&lt;li&gt;Depend on vendor-specific authorization protocols&lt;/li&gt;
&lt;li&gt;Embed policy decisions directly into service logic&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This creates tight coupling between business logic and security enforcement.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Orchestration Problem
&lt;/h2&gt;

&lt;p&gt;The deeper issue is not merely token validation or role checks.&lt;/p&gt;

&lt;p&gt;It is the lack of a clear strategy for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Orchestrating security across services&lt;/li&gt;
&lt;li&gt;Distributing and enforcing business policies consistently&lt;/li&gt;
&lt;li&gt;Managing identity propagation between services&lt;/li&gt;
&lt;li&gt;Supporting region- or regulation-dependent policies&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In microservice environments, different teams often develop services with different IAM expectations. The result is a heterogeneous security landscape where policies are interpreted and enforced differently across the system.&lt;/p&gt;

&lt;p&gt;When company-wide governance policies enter the picture — for example, IT or security department mandates — complexity increases further. Services must not only enforce project-specific rules but also comply with overarching business policies.&lt;/p&gt;




&lt;h2&gt;
  
  
  “But Monoliths Have These Problems Too”
&lt;/h2&gt;

&lt;p&gt;Yes — many of these issues also exist in monolithic architectures.&lt;/p&gt;

&lt;p&gt;However, microservices amplify them.&lt;/p&gt;

&lt;p&gt;Distributed systems introduce additional concerns:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Inter-service trust relationships&lt;/li&gt;
&lt;li&gt;Identity propagation across boundaries&lt;/li&gt;
&lt;li&gt;Policy evaluation consistency&lt;/li&gt;
&lt;li&gt;Latency and availability of authorization decisions&lt;/li&gt;
&lt;li&gt;Cross-region or multi-tenant policy variations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In a monolith, security flaws tend to be centralized.&lt;br&gt;
In microservices, they become distributed and harder to reason about.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Case Study
&lt;/h2&gt;

&lt;p&gt;Considering the case study introduced in &lt;a href="https://dev.to/luis_hartmann/chapter-0-decoupling-authorization-from-microservice-based-applications-46j0"&gt;Chapter 0&lt;/a&gt;, we start with the following architecture:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzeq0x8dnhnqum6tnbdmx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzeq0x8dnhnqum6tnbdmx.png" alt="InnoDocApp Architecture Overview" width="727" height="345"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The core components are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;InnoDocApp&lt;/strong&gt; – the document portal used by external partners
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;InnoDocStore&lt;/strong&gt; – the storage system containing internal documents
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DB-Metadata&lt;/strong&gt; – a metadata database storing document attributes relevant for access control
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ideally, document content and access-control metadata are stored separately. By isolating authorization-relevant attributes from the document storage itself, operational responsibilities remain cleanly divided: IT operations manage document storage, while InnoDocApp manages access-related metadata.&lt;/p&gt;

&lt;p&gt;This separation, however, introduces new concerns — such as synchronization between documents and their metadata — which we will leave aside for now.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Happens in this Architecture
&lt;/h2&gt;

&lt;p&gt;In this initial model, when a request for a document arrives, InnoDocApp must:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Ensure the subject is authenticated
&lt;/li&gt;
&lt;li&gt;Determine whether the subject is authorized to access the document

&lt;ul&gt;
&lt;li&gt;Compare subject attributes (roles, claims, etc.)
&lt;/li&gt;
&lt;li&gt;Evaluate them against document attributes stored in DB-Metadata
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Execute the corresponding database operations (download, read, etc.)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The critical issue:&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Steps 1 and 2 are embedded directly into the application.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This tightly couples security logic with business logic — exactly the pattern we want to avoid.&lt;/p&gt;




&lt;h2&gt;
  
  
  Externalizing Authorization: The PXP Architecture
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://www.oasis-open.org/org/" rel="noopener noreferrer"&gt;OASIS work group&lt;/a&gt; introduced a  &lt;a href="https://www.%20oasis-open.org/committees/xacml/repository/%20cs-xacml-specification-1.1.pdf" rel="noopener noreferrer"&gt;standardized approach&lt;/a&gt; to externalize authorization decisions. Within the OASIS ecosystem — particularly in the context of XACML — this architectural pattern is known as the &lt;strong&gt;PXP architecture&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjx7ks4f0vdztzeynt06h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjx7ks4f0vdztzeynt06h.png" alt="PXP Authorization Architecture" width="654" height="504"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The PXP model separates authorization into clearly defined components:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Policy Enforcement Point (PEP)
&lt;/h3&gt;

&lt;p&gt;An access request is received by the PEP.&lt;/p&gt;

&lt;p&gt;The PEP:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Intercepts the request&lt;/li&gt;
&lt;li&gt;Enforces the final decision&lt;/li&gt;
&lt;li&gt;Does &lt;strong&gt;not&lt;/strong&gt; make authorization decisions itself&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead, it delegates the decision to the PDP.&lt;/p&gt;




&lt;h3&gt;
  
  
  2. Policy Decision Point (PDP)
&lt;/h3&gt;

&lt;p&gt;The PDP evaluates whether a:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Subject&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;May perform an &lt;strong&gt;Action&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;On a &lt;strong&gt;Resource&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It returns a decision such as &lt;strong&gt;Allow&lt;/strong&gt; or &lt;strong&gt;Deny&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The PDP contains no business logic — only policy evaluation logic.&lt;/p&gt;




&lt;h3&gt;
  
  
  3. Policy Administration Point (PAP)
&lt;/h3&gt;

&lt;p&gt;The PAP defines and manages the policies that govern access control.&lt;/p&gt;

&lt;p&gt;It answers:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What are the rules?&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  4. Policy Information Point (PIP)
&lt;/h3&gt;

&lt;p&gt;The PIP provides additional attributes required for decision-making:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Subject attributes (roles, department, clearance level)&lt;/li&gt;
&lt;li&gt;Resource attributes (classification, ownership)&lt;/li&gt;
&lt;li&gt;Contextual information (time, region, risk signals)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Without the PIP, the PDP would lack the data required to make informed decisions.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why This Matters
&lt;/h2&gt;

&lt;p&gt;The PXP architecture formalizes what we conceptually want:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Applications should not decide authorization.&lt;/li&gt;
&lt;li&gt;Policies should not live in business code.&lt;/li&gt;
&lt;li&gt;Decision logic should be centralized and replaceable.&lt;/li&gt;
&lt;li&gt;Attribute retrieval should be separated from policy evaluation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of embedding authentication and authorization directly into InnoDocApp, we externalize policy evaluation and turn the application into a pure business component.&lt;/p&gt;

&lt;p&gt;This architectural separation allows authorization to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Scale independently
&lt;/li&gt;
&lt;li&gt;Be audited centrally
&lt;/li&gt;
&lt;li&gt;Be updated without redeploying services
&lt;/li&gt;
&lt;li&gt;Be standardized across teams
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And this is exactly what our InnoDocApp scenario requires.&lt;/p&gt;




&lt;p&gt;In the next chapter, we will apply the PXP model concretely to our case study and show how InnoDocApp can delegate authorization decisions entirely.&lt;/p&gt;

</description>
      <category>microservices</category>
      <category>software</category>
      <category>architecture</category>
      <category>security</category>
    </item>
    <item>
      <title>Chapter 0 - Decoupling Authorization from Microservice-Based Applications</title>
      <dc:creator>Luis Gustavo Lauermann Hartmann</dc:creator>
      <pubDate>Sat, 21 Feb 2026 15:03:00 +0000</pubDate>
      <link>https://dev.to/luis_hartmann/chapter-0-decoupling-authorization-from-microservice-based-applications-46j0</link>
      <guid>https://dev.to/luis_hartmann/chapter-0-decoupling-authorization-from-microservice-based-applications-46j0</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Disclaimer&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This article series is the result of a collaboration between &lt;a class="mentioned-user" href="https://dev.to/dominikpollok"&gt;@dominikpollok&lt;/a&gt; (co-student), &lt;a class="mentioned-user" href="https://dev.to/dboschert"&gt;@dboschert&lt;/a&gt; (Master’s student currently writing his thesis) and me.&lt;/p&gt;

&lt;p&gt;The project was carried out under the supervision of the Cooperation and Management (C&amp;amp;M) research group at KIT. However, the perspectives and interpretations presented in this series reflect solely those of the involved students and do not necessarily represent the official views of C&amp;amp;M.&lt;/p&gt;

&lt;p&gt;The related Master’s thesis will be referenced here once it has been completed.&lt;/p&gt;

&lt;p&gt;All articles are written manually. An LLM is used exclusively for syntactic refinement and readability improvements.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Preface
&lt;/h2&gt;

&lt;p&gt;Most computer science students learn how to build applications.&lt;/p&gt;

&lt;p&gt;Far fewer learn how to &lt;em&gt;protect them&lt;/em&gt; properly — or how to design security mechanisms that scale across distributed systems.&lt;/p&gt;

&lt;p&gt;This semester, I took a course on microservice system architecture. It combined theory with a practical project, and the practical part turned out to be the most impactful: I had the opportunity to assist a master’s thesis focused on externalized authorization using Decentralized Identities (DI).&lt;/p&gt;

&lt;p&gt;Decentralized Identity is gaining significant traction in Europe, especially with initiatives such as EUDI. But beyond the identity landscape itself, what truly caught my attention was a more fundamental architectural question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;How do you design authorization for distributed systems in a clean, reusable, and maintainable way?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This series explores that question.&lt;/p&gt;

&lt;p&gt;The focus is on architecture — design decisions, trade-offs, and structural patterns that make authorization scalable across distributed services.&lt;/p&gt;

&lt;p&gt;Rather than discussing theory in isolation, the concepts presented here are backed by a working proof of concept. The implementation under development can be found in my GitHub repository:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://github.com/Luis-Guga/InnoDocAuthZEN" rel="noopener noreferrer"&gt;https://github.com/Luis-Guga/InnoDocAuthZEN&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There is no “astronaut architecture” here — only practical experimentation and applied design.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Scenario
&lt;/h2&gt;

&lt;p&gt;Let’s imagine a company called InnoComp.&lt;/p&gt;

&lt;p&gt;InnoComp manages multiple projects. Each project produces internal documentation stored in a centralized repository — we’ll call it InnoDocStore.&lt;/p&gt;

&lt;p&gt;Alice is a project manager at InnoComp. Her team requires expertise in a domain outside their specialization, so she hires John, an external partner from another company.&lt;/p&gt;

&lt;p&gt;John needs access to selected project documents — but certainly not all of them.&lt;/p&gt;

&lt;p&gt;He is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Not an internal employee&lt;/li&gt;
&lt;li&gt;Not part of the company’s identity infrastructure&lt;/li&gt;
&lt;li&gt;Not inherently trusted&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To enable controlled access, InnoComp introduces InnoDocApp — an application that acts as a secure gateway for external collaborators. It allows partners like John to access specific internal documents under strict authorization constraints.&lt;/p&gt;

&lt;p&gt;You can think of InnoDocApp as a controlled exposure layer over internal resources.&lt;/p&gt;

&lt;p&gt;The architecture treats documents as valuable objects and aims to minimize their exposure to external employees by securing InnoDocApp. We assume that InnoDocStore is already secured.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Policy Problem
&lt;/h2&gt;

&lt;p&gt;Alice and InnoComp’s security manager define a formal access policy:&lt;/p&gt;

&lt;p&gt;Who can access which documents, and under what conditions?&lt;/p&gt;

&lt;p&gt;We’ll call this policy InnoDocAccessPolicy.&lt;/p&gt;

&lt;p&gt;At this point, the real architectural challenge begins.&lt;/p&gt;

&lt;p&gt;How do we enforce this policy in a way that is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Structured&lt;/li&gt;
&lt;li&gt;Maintainable&lt;/li&gt;
&lt;li&gt;Reusable&lt;/li&gt;
&lt;li&gt;Robust&lt;/li&gt;
&lt;li&gt;Scalable across multiple applications&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is not just about securing a single application. It is about designing a system that can enforce consistent authorization logic across an ecosystem of services.&lt;/p&gt;

&lt;h2&gt;
  
  
  What We Don’t Want
&lt;/h2&gt;

&lt;p&gt;There are several straightforward approaches:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Implement authentication directly inside InnoDocApp&lt;/li&gt;
&lt;li&gt;Protect endpoints at the controller level (e.g., in an MVC architecture)&lt;/li&gt;
&lt;li&gt;Embed an authorization service within the application itself&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All of these approaches are technically viable.&lt;/p&gt;

&lt;p&gt;And all of them introduce architectural coupling.&lt;/p&gt;

&lt;p&gt;The problem emerges the moment a second application with similar Identity and Access Management (IAM) requirements is introduced.&lt;/p&gt;

&lt;p&gt;Now we must replicate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Authentication logic&lt;/li&gt;
&lt;li&gt;Token validation&lt;/li&gt;
&lt;li&gt;Policy enforcement&lt;/li&gt;
&lt;li&gt;Authorization rules&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Security logic begins to spread across services.&lt;/p&gt;

&lt;p&gt;What started as a convenient implementation becomes distributed architectural debt.&lt;/p&gt;

&lt;p&gt;This is precisely what we want to avoid.&lt;/p&gt;

&lt;h2&gt;
  
  
  What This Series Will Cover
&lt;/h2&gt;

&lt;p&gt;In this series, I will walk through the architecture we developed — including the reasoning behind it, the trade-offs we encountered, and the mistakes we made along the way.&lt;/p&gt;

&lt;p&gt;The goal is to show how authorization can be decoupled from application logic and treated as first-class architectural concern.&lt;/p&gt;

&lt;p&gt;If you are building distributed systems and want them to scale securely beyond a single service, this exploration may offer a useful perspective — and perhaps help you avoid embedding security logic in places you’ll later regret.&lt;/p&gt;

</description>
      <category>microservices</category>
      <category>security</category>
      <category>architecture</category>
      <category>software</category>
    </item>
  </channel>
</rss>
