Keycloak Setup
Motivation
Find a user mangement system for ONAP to use which
provides a GUI
allows setup via REST
doubles as oauth provider
Based on the requirements, Keycloak was chosen.
Version
Keycloak version 11.0.3 is used.
General
Keycloak comes with the so-called 'master' realm by default, which governs all other realms ('sub-realms'). It is for administrative purposes.
To allow 'normal' users to authenticate, a new realm should be created (for any given application / as needed) to separate concerns.
If an admin needs access to sub-realms, he should authenticate against the master realm, receive a token, and can then proceed to access the sub-realms.
For further information about keycloak, see the documentation.
Setup
Start docker container
Do a docker pull quay.io/keycloak/keycloak:11.0.3
Start the docker container with set env vars for 'KEYCLOAK_USER' and 'KEYCLOAK_PASSWORD` on a preferred port. Internal port is 8080.
Navigate to http://localhost:8080/auth/admin and login, getting access to the master realm / admin console.
Create an 'onap' realm
Following, three steps need to be done. The creation of the default users, creating and assigning roles, and the creation of a client for onap/odlux to use for authentication of the users.
Adding Roles
Navigate to 'Roles'
Add roles as needed
Adding default users
Navigate to 'Users'
Add users as needed
Once created, click a user, navigate to 'Role Mappings' and assign a given role
Adding client
Navigate to 'Clients' and create a new one
Create a client with client ID 'odlux.app' and client protocol 'openid-connect'
Select client and open 'Settings' tab
enable if not already done
Direct Access Grants
Standard Flow Enabled
Add valid redirect urls for your onap installation
Set access type to 'confidential'
(Save. Navigate to the 'credentials' tab and create your secret)
(Note: If the lifespan of a token should be longer, it can be updated under the 'Advanced Settings' dropdown)
Further setup
Before you go and run Keycloak in production there are a few more things that you will want to do, including:
Switch to a production ready database such as PostgreSQL
Configure SSL with your own certificates
Switch the admin password to a more secure password
Quoted from: [https://www.keycloak.org/getting-started/getting-started-docker]