unité systemd et amelioration generale de la doc
This commit is contained in:
parent
c277bca0d6
commit
7b77815a8a
|
@ -16,12 +16,12 @@ Installer Keycloak sur son hote avec OpenJDK (openjdk-17 pour Keycloak 23)
|
||||||
# apt install openjdk-17-jre
|
# apt install openjdk-17-jre
|
||||||
```
|
```
|
||||||
|
|
||||||
Lister les releases
|
Lister les releases pour en choisir une
|
||||||
|
|
||||||
```{.bash}
|
```{.bash}
|
||||||
$ git ls-remote --tags https://github.com/keycloak/keycloak
|
$ git ls-remote --tags https://github.com/keycloak/keycloak
|
||||||
...
|
...
|
||||||
99774b3f7a776476e7f04e472e13e3915971a6fb refs/tags/21.1.2
|
99774b3f7a776476e7f04e472e13e3915971a6fb refs/tags/23.x.x
|
||||||
```
|
```
|
||||||
|
|
||||||
Récupérer et extraire le zip de la release souhaitée
|
Récupérer et extraire le zip de la release souhaitée
|
||||||
|
@ -51,11 +51,44 @@ Se connecter à http://localhost:8080/ et créer un username et password admin
|
||||||
|
|
||||||
Se connecter à http://localhost:8080/admin avec les identifiant admin
|
Se connecter à http://localhost:8080/admin avec les identifiant admin
|
||||||
|
|
||||||
Pour Lancer en production, il va falloir plus de configuration... voir [configuration](#configuration)
|
Pour Lancer en production, il va falloir configurer d'autres elements, voirs [configuration](#configuration)
|
||||||
|
|
||||||
|
### Unitée Systemd
|
||||||
|
|
||||||
|
On peut wrapper keycloak dans une unitée systemd, adaptez `ExecStart`
|
||||||
|
|
||||||
|
```{.ini}
|
||||||
|
# vim /etc/systemd/system/keycloak.service
|
||||||
|
[Unit]
|
||||||
|
Description=Keycloak server
|
||||||
|
After=network-online.target
|
||||||
|
Wants=network-online.target systemd-networkd-wait-online.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
ExecStart=/root/keycloak-23.0.3/bin/kc.sh start
|
||||||
|
|
||||||
|
# Disable timeout logic and wait until process is stopped
|
||||||
|
TimeoutStopSec=0
|
||||||
|
|
||||||
|
# SIGTERM signal is used to stop the Java process
|
||||||
|
KillSignal=SIGTERM
|
||||||
|
|
||||||
|
# Send the signal only to the JVM rather than its control group
|
||||||
|
KillMode=process
|
||||||
|
|
||||||
|
# Java process is never killed
|
||||||
|
SendSIGKILL=no
|
||||||
|
|
||||||
|
# When a JVM receives a SIGTERM signal it exits with code 143
|
||||||
|
SuccessExitStatus=143
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
```
|
||||||
|
|
||||||
## Configuration pour de la production
|
## Configuration pour de la production
|
||||||
|
|
||||||
Configuration d'une instance/server en prodution...
|
Configuration d'une instance/server de prodution...
|
||||||
|
|
||||||
On peut spécifier de la configuration via des envs, arguments, fichier de configuration et KeyStore java. Celle-ci sera prise en comte dans cette ordre precedence (des env pourrons surcharger la conf en dur par exemple)
|
On peut spécifier de la configuration via des envs, arguments, fichier de configuration et KeyStore java. Celle-ci sera prise en comte dans cette ordre precedence (des env pourrons surcharger la conf en dur par exemple)
|
||||||
|
|
||||||
|
@ -65,7 +98,9 @@ Ici pour simplifier, on configurera via l'instance via son fichier de configurat
|
||||||
|
|
||||||
>*Remarque* : la configuration par envs et arguments est persisté par Quarkus
|
>*Remarque* : la configuration par envs et arguments est persisté par Quarkus
|
||||||
|
|
||||||
La documentation complète de la configuration d'une instance en production : <https://www.keycloak.org/server/configuration>
|
* La documentation complète de la configuration d'une instance en production : <https://www.keycloak.org/server/configuration>
|
||||||
|
|
||||||
|
* Liste exhaustive des options de configuration : <https://www.keycloak.org/server/all-config>
|
||||||
|
|
||||||
### Base de données
|
### Base de données
|
||||||
|
|
||||||
|
@ -73,13 +108,15 @@ Keycloak en production a besoin d'un accès à une base de donnée
|
||||||
|
|
||||||
lien : [documentation keycloak configuration bdd](https://www.keycloak.org/server/db)
|
lien : [documentation keycloak configuration bdd](https://www.keycloak.org/server/db)
|
||||||
|
|
||||||
Il faut créer une base de donnée (par défaut le schéma `keycloak`) et utilisateur associé pour Keycloak
|
Il faut créer une base de donnée `keycloak` et utilisateur associé pour Keycloak
|
||||||
|
|
||||||
|
> Si on utilise un autre nom de base, il faut alors specifier `db-schema` dans la configuration
|
||||||
|
|
||||||
* [HowtoPostgreSQL](/HowtoPostgreSQL.md#créer-un-utilisateur-et-une-base-de-données)
|
* [HowtoPostgreSQL](/HowtoPostgreSQL.md#créer-un-utilisateur-et-une-base-de-données)
|
||||||
|
|
||||||
* [HowtoMySQL](/HowtoMySQL.md#créer-une-base-de-données-et-un-utilisateur-associé)
|
* [HowtoMySQL](/HowtoMySQL.md#créer-une-base-de-données-et-un-utilisateur-associé)
|
||||||
|
|
||||||
#### Configuration via fichier configuration `keycloak.conf`
|
* Configuration via fichier configuration `keycloak.conf`
|
||||||
|
|
||||||
```{.ini}
|
```{.ini}
|
||||||
# The database vendor.
|
# The database vendor.
|
||||||
|
@ -94,20 +131,30 @@ db-url-host=127.0.0.1
|
||||||
|
|
||||||
On peut spécifier en plus si besoin `db-url-port` pour le port ou même `db-url` pour spécifier entièrement l'URL [jdbc](/Glossaire.md#odbcjdbc)
|
On peut spécifier en plus si besoin `db-url-port` pour le port ou même `db-url` pour spécifier entièrement l'URL [jdbc](/Glossaire.md#odbcjdbc)
|
||||||
|
|
||||||
#### Configuration via arguments au démarrage
|
* Configuration via arguments au démarrage
|
||||||
|
|
||||||
```{.bash}
|
```{.bash}
|
||||||
bin/kc.sh start --db mariadb --db-url-host mymariadb --db-username evocloak --db-password change_me
|
bin/kc.sh start --db mariadb --db-url-host mymariadb --db-username evocloak --db-password change_me
|
||||||
```
|
```
|
||||||
|
|
||||||
#### TLS
|
### Hostname
|
||||||
|
|
||||||
<https://www.keycloak.org/server/enabletls>
|
|
||||||
<https://www.keycloak.org/server/hostname>
|
<https://www.keycloak.org/server/hostname>
|
||||||
|
|
||||||
Pour s'assurer de la securité sur une instance de production, on ne doit jamais exposer celle-ci en HTTP. Nous allons configurer celle-ci en HTTPS/TLS
|
En production, un utilisateur doit se connecter en utilisant le hostname à préciser dans la configuration :
|
||||||
|
|
||||||
Pour allons avoir besoin d'un certificat et de sa clef privé... voir [HowtoSSL](/HowtoSSL.md#générer-un-certificat-auto-signé)
|
```{.ini}
|
||||||
|
# Hostname for the Keycloak server.
|
||||||
|
hostname=test.example.org
|
||||||
|
```
|
||||||
|
|
||||||
|
### SSL/TLS
|
||||||
|
|
||||||
|
<https://www.keycloak.org/server/enabletls>
|
||||||
|
|
||||||
|
On ne doit jamais exposer une instance de production en HTTP. Nous allons configurer celle-ci en HTTPS/TLS
|
||||||
|
|
||||||
|
Pour cela, nous avons besoin d'un certificat et de sa clef privé pour le hostname choisi... voir [HowtoSSL](/HowtoSSL.md#générer-un-certificat-auto-signé) ou [HowtoLetsEncrypt](/HowtoLetsEncrypt.md#génération-du-certificat) par exemple...
|
||||||
|
|
||||||
```{.ini}
|
```{.ini}
|
||||||
# The file path to a server certificate or certificate chain in PEM format.
|
# The file path to a server certificate or certificate chain in PEM format.
|
||||||
|
@ -117,8 +164,27 @@ https-certificate-file=/root/keycloak_certificat.crt
|
||||||
https-certificate-key-file=/root/keycloak_private.key
|
https-certificate-key-file=/root/keycloak_private.key
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Exemple de configuration
|
||||||
|
|
||||||
|
Exemple de configuration avec
|
||||||
|
|
||||||
|
WIP
|
||||||
|
|
||||||
|
## Configuration avancée
|
||||||
|
|
||||||
|
### Log et monitoring
|
||||||
|
|
||||||
|
* Par défaut les logs ne sont pas persisté dans un fichier, on peut l'activer et indiquer un fichier (par défaut dans data/log/keycloak.log dans le dossier de keycloak)
|
||||||
|
```
|
||||||
|
log=console,file
|
||||||
|
log-level=debug
|
||||||
|
log-file=/var/log/keycloak.log
|
||||||
|
```
|
||||||
|
|
||||||
### Haute disponibilité
|
### Haute disponibilité
|
||||||
|
|
||||||
|
WIP
|
||||||
|
|
||||||
keycloak est conçu pour fonctionner en haute disponibilité avec [infinispan](https://infinispan.org/) (In-Memory Distributed Data Store)
|
keycloak est conçu pour fonctionner en haute disponibilité avec [infinispan](https://infinispan.org/) (In-Memory Distributed Data Store)
|
||||||
|
|
||||||
TODO https://www.keycloak.org/server/configuration-production -> https://www.keycloak.org/server/caching
|
TODO https://www.keycloak.org/server/configuration-production -> https://www.keycloak.org/server/caching
|
||||||
|
|
Loading…
Reference in a new issue