OS.js is an open-source web desktop platform with a window manager, application APIs, GUI toolkit, filesystem abstractions and much more.
This is the Auth0 Auth Provider Adapter for OS.js.
THIS IS A WORK IN PROGRESS
Please see the OS.js Authentication Guide for general information.
This adapter makes it possible to authenticate/authorize logins via Auth0.
The client will use the Auth0 "Lock" (login) and send the user profile to the server.
The server will inject middleware to protect the APIs.
This is the setup procedure:
- Create your application on Auth0
- Create your API on Auth0
- Install this library
- Set up the server
- Set up the client
npm install --save --production @osjs/auth0-auth
In your server configuration file (src/server/config.js
):
module.exports = {
// Add the following section
auth0: {
jwksUri: 'https://YOUR_AUTH0_DOMAIN/.well-known/jwks.json',
audience: 'https://YOUR_AUDIENCE/',
issuer: 'https://YOUR_AUTH0_DOMAIN/',
}
};
In your server bootstrap script (src/server/index.js
):
// In the top of the file load the library
const auth0auth = require('@osjs/auth0-auth/server.js');
// Locate this line in the file and add the following:
osjs.register(AuthServiceProvider, {
args: {
adapter: auth0auth
}
});
A restart of the server is required
Add the following script to your src/client/index.ejs
file:
<script src="https://cdn.auth0.com/js/auth0/9.5.1/auth0.min.js"></script>
In your client configuration file (src/client/config.js
) file remove the automatic login:
module.exports = {
// Either comment out this section, or remove it entirely
/*
auth: {
login: {
username: 'demo',
password: 'demo'
}
}
*/
// Add the following section
auth0: {
domain: 'YOUR_AUTH0_DOMAIN',
clientID: 'YOUR_CLIENT_ID',
audience: 'https://YOUR_AUDIENCE/'
}
};
In your client bootstrap script (src/client/index.js
):
// In the top of the file load the library
import {Login} from '@osjs/auth0-auth';
// Locate this line in the file and add the following:
osjs.register(AuthServiceProvider, {
before: true,
args: {
login: (core, options) => new Login(core, options)
}
});
Rebuilding the client is required
- Sponsor on Github
- Become a Patreon
- Support on Open Collective
- Contribution Guide
See the Official Manuals for articles, tutorials and guides.