/interoperability

Implementation of an Authorization Agent & UMA Authorization Service compatible with the Community Solid Server

Primary LanguageTypeScriptMIT LicenseMIT

Solid Application Interoperability playground for Community Solid Server

CI/CD codecov

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.

Goals

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.

Structure

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 & classes
  • packages/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.

Getting started

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.

  1. 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.
  2. Run npm install in the project root
  3. 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.