Science Score: 13.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (11.4%) to scientific vocabulary
Last synced: 10 months ago · JSON representation

Repository

Basic Info
  • Host: GitHub
  • Owner: john-shepherdson
  • License: apache-2.0
  • Language: JavaScript
  • Default Branch: master
  • Size: 5.03 MB
Statistics
  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Created over 1 year ago · Last pushed about 1 year ago
Metadata Files
Readme Changelog Contributing License Code of conduct Codemeta

README.md

Introduction

The federation registry provides a secure web interface through which service operators can register and manage their OpenID Connect and SAML based service. A federation registry instance can serve multiple tenants and supports different AAI proxy technologies(Keycloak, SimpleSAMLphp, SATOSA (TODO), MITREid Connect). Services can be managed through the portal and are deployed by sending configuration messages to deployment agents that run in parallel with this project. Messages are exchanged using ARGO Messaging Service.

Federation registry is consisted of three node.js projects:

  • federation-registry-frontend: A front-end portal created with ReactJS
  • federation-registry-backend-api: An API created with Express.js
  • federation-registry-backend-ams-agent: An agent that uses the api and communicates with ams

Usefull Links - Documentation - Swagger Documentation - Ansible Role - Deployment Agents

Running the project

The deployment process has been automated with the use of Ansible. You can find the Ansible role in this repository.

Dependencies

Federation registry requires Nodejs and a PostgreSQL database to run. Versions used in project development:

  • node v14.19.3
  • PostgreSQL 12.4

Database

A PostgreSQL database should be created using the schema described in dbschema.sql_

Configuration

If we need to set the project to communicate with deployment agents we will need the following from the ams setup:

  • the base url of the ams installation
  • the project name
  • a user token with access to the publish topics
  • a verification hash for the push endpoint
  • an authorization key for the push endpoint

Initialise/Configure Tenant

1) Setup the tenants configuration file. federation-registry-backend-api/JavaScript/config.json

2) Initialise tenant in the database. An example of an initialisation script can be seen in the setup_tenant.sql file - Authentication: Configure the Issuer that will be used for authentication providing also the Client Id and Client Secret. - User Roles: Configure the user roles and the entitlements that grant them and associate the with role actions. (The use of the example roles is recommended) - Deployment Agents: Configure the deployment agents that will be connected to the Federation Registry instance.

*Note: If you are running federation registry in a development instance consider using a mock deployer.

Backend API

Configure Environment File federation-registry-backend-api/JavaScript/.env

shell EXPRESS_BASE = base_api_url AMS_AGENT_KEY=authentication_key_for_ams_agent AMS_AUTH_KEY=authorization_key_for_push_subscription AMS_VER_HASH = verification_hash_used_to_activate_push_subscription ADMIN_AUTH_KEY = authorization_key_for_administrative_routes CORS = external_urls_allowed TOKEN_KEY = token_used_for_encription

Configure Database File federation-registry-backend-api/db-config/db-config.json

json { "database": "federation_registry_db", "host": "localhost", "password": "postgres", "port": 5432, "user": "postgres" }

Front End

For the frontend we need to configure where the backend api is located: federation-registry-frontend/src/config.json

json { "host": { "tenant1":"http://localhost:5000/", "tenant2":"http://localhost:5000/" }, "basename": "/", }

AMS Agent

Ams Agent is responsible for - Creating the necessary Topics and Subscriptions in the AMS. - Pushing Deployment messages from the Federation Registry to the AMS. To configure the ams we must set the environmental variables:

shell AMS_PROJECT=ams-project AMS_BASE_URL=ams-url AMS_USER_TOKEN= user-token AMS_ADMIN_TOKEN= admin-user-token EXPRESS_URL=base-url-api EXPRESS_KEY=authentication_key_for_ams_agent ENV=installation_environment

Installing Node Modules

Install node modules for all three node projects:

shell $ cd federation-registry-backend-api $ npm install $ cd ../federation-registry-frontend $ npm install $ cd ../federation-registry-backend-ams-agent $ npm install

Run the project

To run the federation-registry-backend-api:

shell $ cd federation-registry-backend-api/JavaScript $ node index.js

To run the federation-registry-frontend:

shell $ cd federation-registry-frontend $ npm start

To run the federation-registry-backend-ams-agent:

shell $ cd federation-registry-backend-ams-agent $ node app.js

Role Actions

Each user role is associated with a set of actions. Here is a list of the supported actions.

Simple Actions
  • get_user: User has access to it's own personal information.
  • getownservices: User can get a list of their services.
  • getownservice: User can view their own services.
  • getownpetitions: User can view requests for their services.
  • getownpetition: User can view requests for services owned by them.
  • addownpetition: User can create new requests.
  • updateownpetition: User can update requests for services they own.
  • deleteownpetition: User can cancel requests for their services.
  • reviewownpetition: User can review requests for services they own in a testing environment. ##### Admin Actions
  • get_service: User can view any service.
  • get_services: User can get a list of all services and requests.
  • get_petition: User has access to all requests.
  • get_petitions: Allows User to see all available requests.
  • review_petition: Allows User to review a request.
  • review_notification: User gets a notification when new requests are submitted.
  • review_restricted: User can review a request in a restricted environment.
  • send_notifications: Allows Users to send notifications to service owners.
  • invitetogroup: User can manage owners of any service.
  • error_action: User can troubleshoot deployment errors
  • manage_tags: User can add tags to any service.
  • view_groups: User can view any group.
  • view_errors: User has access to the deployment errors.
  • export_services: User can export services.

Owner

  • Name: John Shepherdson
  • Login: john-shepherdson
  • Kind: user
  • Location: United Kingdom
  • Company: CESSDA

CodeMeta (codemeta.json)

{
  "@context": "https://doi.org/10.5063/schema/codemeta-2.0",
  "type": "SoftwareSourceCode",
  "author": [
    {
      "id": "_:author_1",
      "type": "Person",
      "affiliation": {
        "type": "Organization",
        "name": "Web Developer at Grnet"
      },
      "email": "andreaskoza@grnet.gr",
      "familyName": "Kozadinos",
      "givenName": "Andreas "
    }
  ],
  "contactPoint": {
    "type": "ContactPoint",
    "email": "faai@grnet.gr"
  },
  "codeRepository": "https://github.com/rciam/rciam-federation-registry",
  "dateCreated": "2024-11-25",
  "datePublished": "2021-01-12",
  "description": "The federation registry provides a secure web interface through which service operators can register and manage their OpenID Connect and SAML based service. A federation registry instance can serve multiple tenants and supports different AAI proxy technologies(Keycloak, SimpleSAMLphp, SATOSA (TODO), MITREid Connect). Services can be managed through the portal and are deployed by sending configuration messages to deployment agents that run in parallel with this project. Messages are exchanged using ARGO Messaging Service.",
  "keywords": "aai",
  "name": "RCIAM Federation Registry ",
  "programmingLanguage": [
    "Javascript",
    "HTML",
    "CSS",
    "Handlebars"
  ],
  "version": "1.3.7",
  "contIntegration": "https://github.com/rciam/rciam-federation-registry/issues",
  "codemeta:continuousIntegration": {
    "id": "https://github.com/rciam/rciam-federation-registry/issues"
  }
}

GitHub Events

Total
  • Push event: 2
  • Create event: 5
Last Year
  • Push event: 2
  • Create event: 5

Dependencies

docker/docker-compose.yml docker
  • node 14-buster
  • postgres 11
federation-registry-backend-ams-agent/package-lock.json npm
  • axios 0.21.4
  • base-64 0.1.0
  • dotenv 8.6.0
  • follow-redirects 1.14.9
federation-registry-backend-ams-agent/package.json npm
  • axios ^0.21.4
  • base-64 ^0.1.0
  • dotenv ^8.6.0
federation-registry-backend-api/package-lock.json npm
  • 299 dependencies
federation-registry-backend-api/package.json npm
  • @types/bluebird 3.5.28 development
  • @types/express 4.17.2 development
  • @types/node 14.14.31 development
  • chai ^4.2.0 development
  • mocha ^9.1.3 development
  • supertest ^6.1.6 development
  • typescript 4.4.4 development
  • axios ^1.6.8
  • base64url ^3.0.1
  • bluebird 3.7.1
  • cookie-parser ^1.4.4
  • cors ^2.8.5
  • country-region-data ^1.7.0
  • crypto-js ^4.1.1
  • deep-diff ^1.0.2
  • dotenv ^8.2.0
  • express ^4.18.2
  • express-validator ^6.2.0
  • express-winston ^4.0.3
  • handlebars ^4.7.7
  • mz ^2.7.0
  • nodemailer ^6.6.0
  • nodemailer-express-handlebars ^5.0.0
  • nodemon ^3.0.1
  • openid-client ^5.0.2
  • pg-monitor 1.3.1
  • pg-promise 11.5.0
  • uuid ^8.2.0
  • winston ^3.2.1
  • xml-js ^1.6.11
  • xml2js ^0.6.0
federation-registry-frontend/package-lock.json npm
  • 1261 dependencies
federation-registry-frontend/package.json npm
  • react-scripts 5.0.1 development
  • @fortawesome/fontawesome-svg-core ^6.2.0
  • @fortawesome/free-regular-svg-icons ^6.2.0
  • @fortawesome/free-solid-svg-icons ^6.2.0
  • @fortawesome/react-fontawesome ^0.2.0
  • bootstrap ^4.6.1
  • country-region-data ^1.7.0
  • deep-diff ^1.0.2
  • formik ^2.2.9
  • html-react-parser ^1.4.0
  • i18next ^19.5.1
  • i18next-browser-languagedetector ^5.0.0
  • i18next-xhr-backend ^3.2.2
  • json-loader ^0.5.6
  • react ^16.14.0
  • react-bootstrap ^1.6.4
  • react-bootstrap-typeahead ^5.2.0
  • react-cookie ^4.1.1
  • react-dom ^16.14.0
  • react-i18next ^11.14.0
  • react-router-dom ^5.1.2
  • react-table ^7.7.0
  • uuid ^3.4.0
  • yup ^0.32.11