This repository implements experimental UMA support for the Community Solid Server, as to enable an Authorization Agent like defined by the Solid Application Interoperability Draft Specification to control authorization permissions for agents. In order to test this UMA support a basic UMA Authorization Service API was implemented using ComponentsJS and HandlersJS.
The goal of this project is to (a) enable development of the Application Interoperability specification against a real-world Solid server implementation and (b) to realize the architecture set forth in the paper 'A Policy-Oriented Architecture for Enforcing Consent in Solid' by Debackere, Colpaert, Taelman and Verborgh of using the Solid Data Interoperability specification to implement legal concepts under data protection legislation like consent.
The repository is structured as a Lerna monorepo, where different packages are used for the different functionality domains of the project:
packages/css
: Modules for introducing a UMA Authorization Service as an Authorizer in the Community Solid Server (version 4.0.0).packages/uma
: Modules implementing the necessary routes and API for a UMA Authorization Service.packages/http
: HTTP server application for running the UMA AS and Authorization Agent modules as a server daemon.packages/util
: Utility functions & classespackages/aa
: Implements modules for authorizing using the Application Interoperability specification and for providing Agent Registration discovery via an Authorization Agent.packages/interfaces
: Interfaces for the Authorizer functionality of the UMA Authorization Service, to be used when implementing a new Authorizer strategy.
In order to run this project you need to perform the following steps. Firstly, also ensure that you are using nvm
to manage your node version.
- As some packages used in this project are not published to NPM but to the Github packages repository. You will need to authenticate first using a personal access token.
- Run
npm install
in the project root - Run
npm run bootstrap
.
By default npm run start
will boot up a Community Solid Server instance with UMA support alongside a UMA
Authorization Service.