Dopo l’installazione di KeyCloak, a mio parere meglio utilizzarlo in versione dockerizzata, ci troviamo di fronte alla sua prima configurazione.
Il primo passaggio fondamentale è la creazione di un REALM, che possiamo considerare come una sorta di gruppo all’interno del quale andremo a mappare i nostri utenti e client.

Creiamo il nuovo REALM associandogli un nome e configurando il tipo di EndPoint. In questo caso, la configurazione dell’endpoint è di tipo OpenId Endpoint Configuration.
Il passo successivo è la creazione degli utenti che dovranno utilizzare il servizio. In questo esempio viene creato un utente, a cui KeyCloak associa automaticamente un Id. Nella configurazione possiamo indicare se l’utente è attivo e se è stata effettuata la validazione della mail.

Nel tab Credentials è necessario indicare la password che verrà utilizzata dall’utente, indicando se la password è da considerarsi temporanea (e quindi richiedere il cambio all’utente al primo accesso).

Ora non ci rimane che la configurazione del client che dovremo autenticare. In particolare è necessario indicare il tipo di protocollo che dovrà essere utilizzato scegliendo tra OpenId o SAML.
Nella maggior parte delle configurazioni è necessario utilizzare openid-connect, indicando il client-id (un identificativo specifico per il client che stiamo creando ed il suo url.

Ovviamente per poter utilizzare il client è necessario abilitarlo, settando Authorization enabled.
Se la nostra applicazione ha la necessità di utilizzare ruoli per utenti, è possibile aggiungerli all’interno della sezione Roles.
A questo punto entrando in ciascun utente è possibile associargli il ruole a cui appartiene.
Manca ancora un piccolo passaggio: la creazione dei mappers.
Al momento dell’autenticazione un client riceve i token e può ricevere informazioni relative all’utente. Nel nostro caso quello che vorremmo ricevere sono le informazioni legati ai ruoli.
Per ottenere queste informazioni è necessario entrare nel tabs mapper e creare una nuova mappatura.
Una volta selezionato il clients, possiamo usare il Mapper Type indicato come User Client Role, che consente di ottenere all’interno del json un vettore roles[ ] all’interno del quale troveremo l’elenco dei ruoli associati all’utente.

A questo punto la configurazione è terminata.
Per poter ottenere i dati relativi al client appena creato, possiamo ritornare nel tab Credentials del nostro Client e ottenere le informazioni ClientId e Secret che dovranno essere utilizzati dall’applicazione, al momento della registrazione.

A questo punto non resta che registrare l’applicazione client ed accedere con l’autenticazione.