This monorepo contains packages and applications which provide a way to manage users and groups in:
- Auth0
- AWS Cognito
- Azure AD
You'll need yarn and lerna installed globally:
npm i -g yarn lerna
The easiest way to try this out is to run the standalone server via brokeneck-fastify
:
lerna bootstrap
lerna run build
lerna run create:env
- configure
packages/brokeneck-fastify/.env
based on the authentication provider you want to use packages/brokeneck-html/.env
will be preconfigured with the correct REACT_APP_API_PATH for local development.yarn start
- browse to
http://localhost:5001
To easily develop the packages of this repo you can execute:
yarn dev
This will run:
brokeneck-react
build in watch mode so you can change the React components and see the result immediatelybrokeneck-html
in standalone mode to have a Web UI to accessbrokeneck-fastify
in standalone mode to have a server running
Each provider requires its own configuration, as specified in brokeneck-fastify
's .env.sample
file.
Such configuration can be obtained when configuring the respective service using the provider's usual tooling.
There are additional requirements based on the provider, described in the next sections.
The configured client should be authorized to access the built-in Auth0 Management API
.
When using AWS cognito you must make sure that you have IAM credentials configured for the SDK in the machine running the application, for instance in the .aws/credentials
file.
The configured IAM user must have access to Cognito. The simplest way to do this is to add the AmazonCognitoPowerUser
AWS managed policy to the user.
The registered application must have all the necessary Application permissions
(not Delegated permissions
) to operate on the relevant objects.
These basically include all the combinations of the permissions:
- API:
Azure Active Directory Graph
andMicrosoft Graph
- Objects:
Directory
,Users
,Groups
andGroupMember
- Permissions:
Read.All
,ReadWrite.All
,Create
,
Not all combinations exists, but you should enabled them when they do.
A library of React components which provide the UI.
This package comes in 2 flavors:
- a standalone CRA application running the UI
- static assets containig the whole UI, which can be rendered by an external application
This package comes in two flavors:
- a standalone Fastify application
- a Fastify plugin which can be used by an external application
An Electron application which runs brokeneck-fastify
with the embedded UI.
The packages work in synergy to support different deployment and usage scenarios, described next from the simplest to the most complex and flexible.
The important thing to keep in mind is that this application requires both a frontend and a backend.
If you want to run the application standalone you can use:
brokeneck-fastify
in standalone mode and make it render the UI by configuring the application via environment variablesbrokeneck-desktop
to run the application in desktop mode
You can run brokeneck-fastify
in standalone mode without rendering the UI and brokeneck-html
in standalone mode to provide the UI.
They will be two independent applications.
You can install brokeneck-react
in your React application and use the exported component.
For example, you can provide it as an additional route inside your application.
brokeneck-react has a number of peer dependencies that you have to add to your application:
npm install @material-ui/core @material-ui/lab react react-dom react-router-dom
Please check the exact versions of these packages that are required when installing brokeneck-react.
You will still need to provide a backend, which you can do either by:
- running
brokeneck-fastify
in standalone mode - using
brokeneck-fastify
as a plugin inside an existing Fastify application