« Keycloak » : différence entre les versions
Création de la page Keycloak |
Ajout d'étape d'installation |
||
| Ligne 2 : | Ligne 2 : | ||
== Configuration actuelle == | == Configuration actuelle == | ||
Le service [[Nginx (computing)|Nginx de computing]] transfère les pages web du port '''8127''' (géré par [[Keycloak]]) vers le port '''443''' (https) sur le domaine <code>wiki.linarphy.net</code>. Les données sont gérés par [[Postgresql]] via une base de donnée ayant pour nom '''keycloak''' et pour utilisateur '''keycloak'''. Cette instance stocké dans le dossier <code>/usr/share/keycloak/</code> tourne sur la version '''26.0.0''' avec '''openjdk-21.0.2''' (lui-même dans <code>/usr/share/openjdk/21/</code>). | Le service [[Nginx (computing)|Nginx de computing]] transfère les pages web du port '''8127''' (géré par [[Keycloak]]) vers le port '''443''' (https) sur le domaine <code>wiki.linarphy.net</code>. Les données sont gérés par [[Postgresql]] via une base de donnée ayant pour nom '''keycloak''' et pour utilisateur '''keycloak'''. Cette instance stocké dans le dossier <code>/usr/share/keycloak/</code> tourne sur la version '''26.0.0''' avec '''openjdk-21.0.2''' (lui-même dans <code>/usr/share/openjdk/21/</code>). | ||
| Ligne 15 : | Ligne 16 : | ||
==== Fichiers ==== | ==== Fichiers ==== | ||
La première étape consiste au téléchargement du service avec la commande <code>curl -L https://github.com/keycloak/keycloak/releases/download/26.0.0/keycloak-26.0.0.tar.gz -o keycloak-26.0.0.tar.gz</code> en tant qu'utilisateur '''root'''. Le lien est récupéré sur la page de [https://www.keycloak.org/downloads téléchargement]. Le fichier '''keycloak-26.0.0.tar.gz''' peut ensuite être extrait avec la commande <code>tar -xf keycloak-26.0.0.tar.gz</code> en tant qu'utilisateur '''root''' pour ensuite supprimer cette archive: <code>rm keycloak-26.0.0.tar.gz</code>. | La première étape consiste au téléchargement du service avec la commande <code>curl -L https://github.com/keycloak/keycloak/releases/download/26.0.0/keycloak-26.0.0.tar.gz -o keycloak-26.0.0.tar.gz</code> en tant qu'utilisateur '''root'''. Le lien est récupéré sur la page de [https://www.keycloak.org/downloads téléchargement]. Le fichier '''keycloak-26.0.0.tar.gz''' peut ensuite être extrait avec la commande <code>tar -xf keycloak-26.0.0.tar.gz</code> en tant qu'utilisateur '''root''' pour ensuite supprimer cette archive: <code>rm keycloak-26.0.0.tar.gz</code>. | ||
| Ligne 20 : | Ligne 22 : | ||
==== Permissions ==== | ==== Permissions ==== | ||
Le service s'exécutera avec un utilisateur particulier (et non '''root''') pour isoler le processus. Il est donc nécessaire de créer l'utilisateur local '''keycloak''' avec la commande <code>adduser --system --no-create-home --group keycloak</code> en tant que '''root'''. La commande <code>chown -R keycloak:keycloak /usr/share/keycloak/</code> pour donner les permissions du dossier à ce nouvel utilisateur. | Le service s'exécutera avec un utilisateur particulier (et non '''root''') pour isoler le processus. Il est donc nécessaire de créer l'utilisateur local '''keycloak''' avec la commande <code>adduser --system --no-create-home --group keycloak</code> en tant que '''root'''. La commande <code>chown -R keycloak:keycloak /usr/share/keycloak/</code> pour donner les permissions du dossier à ce nouvel utilisateur. | ||
[[Keycloak]] sera accessible via une connexion chiffré (https), et sa configuration nécessite l'accès à la clef privé et public utilisé pour cette connexion (comme [[Nginx (computing)]]). Pour protéger ces clefs et ne pas les rendre accessible à d'autres utilisateur que '''keycloak''', un hook (script) sera mis en place pour être exécuté par [[Certbot]]. Il va donc être nécessaire de créer le dossier <code>/usr/share/keycloak/certs</code> via la commande <code>mkdir /usr/share/keycloak/certs</code> en tant que '''root''' (oui oui, pas '''keycloak''' pour le moment, c'est normal). | [[Keycloak]] sera accessible via une connexion chiffré (https), et sa configuration nécessite l'accès à la clef privé et public utilisé pour cette connexion (comme [[Nginx (computing)]]). Pour protéger ces clefs et ne pas les rendre accessible à d'autres utilisateur que '''keycloak''', un hook (script) sera mis en place pour être exécuté par [[Certbot]]. Il va donc être nécessaire de créer le dossier <code>/usr/share/keycloak/certs</code> via la commande <code>mkdir /usr/share/keycloak/certs</code> en tant que '''root''' (oui oui, pas '''keycloak''' pour le moment, c'est normal), puis de modifier ces permissions avec les commandes <code>chown keycloak:keycloak /usr/share/keycloak/certs</code> et <code>chmod 500 /usr/share/keycloak/certs</code>. Créer ensuite le fichier <code>/usr/share/keycloak/certs/hook.sh</code> toujours en tant que '''root''' avec l'éditeur de sont choix contenant le script: | ||
#!/usr/bin/env sh | |||
# adapted from https://gist.github.com/Sternerson/file-ssl-deploy-hook-L1 | |||
KEYCLOAK_CERT_DIR=/usr/share/keycloak/certs | |||
umask 077 # the certificate are not world readable during the copying | |||
cp "${RENEWED_LINEAGE}/privkey.pem" "${KEYCLOAK_CERT_DIR}/privkey.pem" | |||
cp "${RENEWED_LINEAGE}/fullchain.pem" "${KEYCLOAK_CERT_DIR}/fullchain.pem" | |||
chown keycloak:keycloak "${KEYCLOAK_CERT_DIR}/privkey.pem" | |||
chown keycloak:keycloak "${KEYCLOAK_CERT_DIR}/fullchain.pem" | |||
chmod 400 "${KEYCLOAK_CERT_DIR}/privkey.pem" | |||
chmod 400 "${KEYCLOAK_CERT_DIR}/fullchain.pem" | |||
Exécuter la commande <code>chmod +x /usr/share/keycloak/hook.sh</code> pour permettre l'exécution du script. Les permissions de ce fichier ne vont pas être autrement modifié, le script ne sera exécuté que par l'utilisateur '''root'''. | |||
==== Configuration ==== | |||
db=postgres | |||
db-username=keycloak | |||
db-password={keycloak-postgresql-password} | |||
db-url=jdbc:postgresql://localhost/keycloak | |||
health-enabled=true | |||
metrics-enabled=true | |||
https-certificate-file=${kc.home.dir}/certs/fullchain.pem | |||
https-certificate-key-file=${kc.home.dir}/certs/privkey.pem | |||
hostname=auth.linarphy.net | |||
proxy-headers=xforwarded | |||
https-port=8127 | |||
==== Nginx ==== | |||
Créer le fichier <code>/etc/nginx/sites-available/auth.linarphy.net</code> contenant la configuration [[Nginx (computing)|Nginx]] suivante: | |||
server { | |||
server_name auth.linarphy.net; | |||
listen 80; | |||
listen [::]:80; | |||
} | |||
Puis créer un lien symbolique avec la commande <code>ln -s /etc/nginx/sites-available/auth.linarphy.net /etc/nginx/sites-enabled/auth.linarphy.net</code> et tester la configuration via <code>nginx -t</code>. Si la configuration est valide, il est nécessaire de recharger le service systemd avec <code>systemctl reload nginx</code> et mettre en place le chiffrement ssl avec <code>certbot --nginx --domain auth.linarphy.net --deploy-hook=/usr/share/keycloak/certs/hook.sh</code>. | |||
Vérifier ensuite sur un navigateur l'accès au service sur le protocole https. | |||