|
| 1 | +0001: Purpose of This Repo |
| 2 | +########################## |
| 3 | + |
| 4 | +Status |
| 5 | +****** |
| 6 | + |
| 7 | +**Draft** |
| 8 | + |
| 9 | +Context |
| 10 | +******* |
| 11 | + |
| 12 | +The authorization (AuthZ) project is a community initiative to modernize how roles and permissions are defined, stored, and evaluated across the ecosystem. The existing system is fragmented, inflexible, and often results in over-permissioned users, repetitive administrative tasks, and difficulty adapting roles to organizational needs. |
| 13 | + |
| 14 | +This project aims to introduce a unified authorization model that supports custom roles, flexible scopes, and policy-based evaluation. By decoupling role/permission logic from application code, the goal is to achieve a more scalable, extensible, and user-friendly authorization framework. |
| 15 | + |
| 16 | +For more details, please refer to the `Roles & Permissions confluence space <https://openedx.atlassian.net/wiki/spaces/OEPM/pages/4724490259>`_. |
| 17 | + |
| 18 | +Decision |
| 19 | +******** |
| 20 | + |
| 21 | +We will create a repository to hold the architecture, design decisions, and reference implementation for the Open edX Authorization (AuthZ) project. |
| 22 | + |
| 23 | +This repository will serve as the central place for: |
| 24 | + |
| 25 | +- Architectural Decision Records (ADRs) that document the evolution of the authorization model. |
| 26 | +- Design documents for scopes, policies, and integration approaches. |
| 27 | +- Reference implementations, libraries, and supporting code. |
| 28 | +- Migration strategies for replacing legacy RBAC models with the new system. |
| 29 | + |
| 30 | +Consequences |
| 31 | +************ |
| 32 | + |
| 33 | +- This repository will provide a single source of truth for all architectural and design decisions regarding the new authorization framework. |
| 34 | +- It will make it easier to share progress, collect feedback, and collaborate across the community. |
| 35 | +- It decouples AuthZ development from ``edx-platform``, ensuring that the project can evolve independently and be later a reusable Django library. |
| 36 | +- The repo creates a clear boundary for experimentation and iteration, while providing a migration path to replace legacy role/permission handling over time. |
| 37 | + |
| 38 | +Rejected Alternatives |
| 39 | +********************* |
| 40 | + |
| 41 | +- **Using the edx-platform repository for AuthZ work.** |
| 42 | + Keeping the new authorization work inside ``edx-platform`` would limit flexibility, slow down iteration, and tightly couple experimental design with production code. |
| 43 | + A standalone repo enables a cleaner separation of concerns and aligns with the long-term goal of a reusable library. |
| 44 | + |
| 45 | +References |
| 46 | +********** |
| 47 | + |
| 48 | +- Technical Approach: `AuthZ <https://openedx.atlassian.net/wiki/spaces/OEPM/pages/5176229910>`_ |
| 49 | +- PRD: `Roles & Permissions <https://openedx.atlassian.net/wiki/spaces/OEPM/pages/4724490259>`_ |
| 50 | +- OEP-66: `Authorization Best Practices <https://docs.openedx.org/projects/openedx-proposals/en/latest/best-practices/oep-0066-bp-authorization.html>`_ |
0 commit comments