rciam-federation-registry
https://github.com/john-shepherdson/rciam-federation-registry
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
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
Metadata Files
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
- Repositories: 1
- Profile: https://github.com/john-shepherdson
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
- node 14-buster
- postgres 11
- axios 0.21.4
- base-64 0.1.0
- dotenv 8.6.0
- follow-redirects 1.14.9
- axios ^0.21.4
- base-64 ^0.1.0
- dotenv ^8.6.0
- 299 dependencies
- @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
- 1261 dependencies
- 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