| azpatt | November 2025 | |
| Babeanu | Standards Track | [Page] |
There are several possible architectures and design patterns for authorization systems. This document details the following patterns: traditional PEP/PDP, Provisioning, External API, User Journeys, Microservices and Authorization Mesh. It details how and when to use each of the patterns. This document is expected to guide the authorization system implementers and integrators, as well as suggest the best possible authorization model to use for each pattern.¶
Authorization is a hard problem, everybody seems to agree. This document introduces the concept of "Authorization Design patterns”, a list of the various common architectures typically found in authorization systems. The purpose of these patterns is to provide ways for practitioners to make sense of these complexities, and tools to overcome them. This document thus tries to provide an exhaustive catalogue of such patterns, similar to what exists in the software development world (see for example: https://refactoring.guru/design-patterns ).¶
The “authorization problem” stems from 4 main factors:¶
The sheer complexity of environments found in the industry. Organisations of all verticals use many heterogeneous systems to run their businesses. They have many types of resources to protect, in many environments (cloud or not), including legacy systems, web services and IoT devices. It is hard, or impossible, to find a system that can cater to all use-cases.¶
The sheer amount of data that organisations need to process nowadays puts a new strain on traditional tools. In the age of Web3, Data Meshes and Data Lakes, proper access control to data at scale is a real concern.¶
Access policy requirements become increasingly complex in a more and more interconnected world. Authorization systems must go well beyond the traditional tools and methodologies supported so far in order to meet these new complexities. For example: data sharing in joint ventures.¶
Finally, it is hard to convince teams and organisations to change the way they’ve always solved the authorization problem: by using home-grown custom code in their systems. This is, arguably, the hardest problem of all. Proper tooling, messaging and training needs to be developed to ease the transition of these teams to more modern methods.¶
By building a catalogue of Authorization Design Patterns, we provide the beginnings of the answers needed to solve these four problems; i.e.,¶
We recognize that different systems require different authorization models;¶
We recognize that new technology is needed to handle the explosion of data we witness worldwide nowadays;¶
We recognize the need for new Authorization models, able to express any current complex access rules in this new environment;¶
Through these patterns, we provide ways by which organisations can start externalising their authorizations in order to reap the benefits of external central policy stores.¶
Legend:¶
➖ : Could be used with extra effort or limitations ✅ : Appropriate to use ❌ : Not Appropriate to use¶
| Legacy App | SPA | Custom App | COTS | REST API | GraphQL API | IoT | Micro Service | API Gtwy | |
|---|---|---|---|---|---|---|---|---|---|
| Traditional PEP | ✅ | ➖ | ✅ | ❌ | ✅ | ❌ | ✅ | ✅ | ❌ |
| Provisioning | ➖* | ➖* | ➖* | ✅ | ➖* | ➖* | ❌ | ➖* | ➖* |
| External API | ✅ | ✅ | ✅ | ➖** | ✅ | ✅ | ✅ | ✅ | ✅ |
| User Journey | ✅ | ✅ | ✅ | ➖** | ✅ | ✅ | ✅ | ✅ | ✅ |
* : Use only if provisioning to a central store (e.g., AD/LDAP) that the resource uses. ** : Only if the resource supports it¶