wiki/HowtoKeycloak.md

171 lines
4.6 KiB
Markdown
Raw Normal View History

2023-06-21 17:49:14 +02:00
# Contexte
2023-06-22 16:06:45 +02:00
Keycloak est un serveur d'authentification et d'autorisation écrit en Java, c'est un "Identity Access Manager" *IAM* open-source permettant de faire du Single-Sign-On et Single-Sign-Out *SS0*, c'est à dire d'utiliser un seul compte pour se (dé-)connecter à différents services.
2023-06-21 17:49:14 +02:00
2023-06-22 16:06:45 +02:00
Keycloak supporte 2 protocoles d'authentification, *SAML 2.0* et *OIDC*
2023-06-21 17:49:14 +02:00
2023-06-22 16:06:45 +02:00
[featureset et presentation](video https://www.youtube.com/watch?v=FyVHNJNriUQ?=8m30s)
2023-06-21 17:49:14 +02:00
# Installation
## En dur
2023-06-22 16:06:45 +02:00
ressources
2023-06-21 17:49:14 +02:00
2023-06-22 16:06:45 +02:00
[doc officielle](https://www.keycloak.org/getting-started/getting-started-zip)
2023-06-21 17:49:14 +02:00
2023-06-22 16:06:45 +02:00
[git de keycloak](https://github.com/keycloak/keycloak/releases)
2023-06-21 17:49:14 +02:00
2023-06-22 16:06:45 +02:00
Installer OpenJDK
2023-06-21 17:49:14 +02:00
2023-06-22 16:06:45 +02:00
```bash
apt install openjdk-11-jre
```
2023-06-21 17:49:14 +02:00
2023-06-22 16:06:45 +02:00
Lister les release
2023-06-21 17:49:14 +02:00
2023-06-22 16:06:45 +02:00
```bash
git ls-remote --tags https://github.com/keycloak/keycloak
```
2023-06-21 17:49:14 +02:00
2023-06-22 16:06:45 +02:00
Récupérer et extraire le zip de la release souhaité
2023-06-21 17:49:14 +02:00
2023-06-22 16:06:45 +02:00
```bash
keycloak_release=21.1.1
keycloak_zip=keycloak-${keycloak_release}.zip
wget https://github.com/keycloak/keycloak/releases/download/${keycloak_release}/keycloak-${keycloak_release}.zip
unzip $keycloak_zip
```
2023-06-21 17:49:14 +02:00
2023-06-22 16:06:45 +02:00
Lancer keycloak depuis son dossier
2023-06-21 17:49:14 +02:00
2023-06-22 16:06:45 +02:00
```bash
keycloak_folder=${keycloak_zip%".zip"}
cd $keycloak_folder
bin/kc.sh start-dev
```
2023-06-21 17:49:14 +02:00
## Brancher une base de donnée de prod
2023-06-22 16:06:45 +02:00
[doc officielle configuration db](https://www.keycloak.org/server/db)
2023-06-22 15:54:26 +02:00
2023-06-22 16:06:45 +02:00
Par defaut le schema `keyclaok` est utilisé
2023-06-21 17:49:14 +02:00
2023-06-22 16:06:45 +02:00
**Mariadb**
2023-06-21 17:49:14 +02:00
2023-06-22 16:06:45 +02:00
pour l'installation et plus de détails coir la [doc evolix installation de mariadb](https://wiki.evolix.org/HowtoMySQL)
2023-06-21 17:49:14 +02:00
2023-06-22 16:06:45 +02:00
(Recommandé )créer une base de donnée et utilisateur associé pour keycloak voir
2023-06-22 15:54:26 +02:00
2023-06-22 16:06:45 +02:00
```bash
db_name=keycloak
user=evocloak
# mysqladmin create $db_name
# mysql
mysql> GRANT ALL PRIVILEGES ON $db_name.* TO '$user'@'%' IDENTIFIED BY '$password';
```
2023-06-22 15:54:26 +02:00
2023-06-22 16:06:45 +02:00
Démarrer le serveur keycloak et (re-)définit les options de configuration (depuis le dossier keycloak)
2023-06-22 15:54:26 +02:00
2023-06-22 16:06:45 +02:00
```bash
bin/kc.sh start --db mariadb --db-url-host mymariadb --db-username evocloak --db-password change_me
```
2023-06-21 17:49:14 +02:00
## Haute disponibilité
2023-06-22 16:06:45 +02:00
keycloak est conçu pour fonctionner en haute disponibilitée avec [infinispan](https://infinispan.org/) ( In-Memory Distributed Data Store)
2023-06-21 17:49:14 +02:00
2023-06-22 16:06:45 +02:00
TODO https://www.keycloak.org/server/configuration-production -> https://www.keycloak.org/server/caching
2023-06-21 17:49:14 +02:00
# Utilisation
## Administration de Keycloak
2023-06-22 16:06:45 +02:00
On supposera que nous nous trouvons dans le dossier d'installation keycloack
2023-06-21 17:49:14 +02:00
2023-06-22 16:06:45 +02:00
```bash
cd $keycloak_folder
```
2023-06-21 17:49:14 +02:00
2023-06-22 16:06:45 +02:00
Voir les option de démarrage / aide
2023-06-21 17:49:14 +02:00
2023-06-22 16:06:45 +02:00
```bash
bin/kc.sh start-dev --help
```
2023-06-21 17:49:14 +02:00
2023-06-22 16:06:45 +02:00
**Lancer Keycloak**
2023-06-21 17:49:14 +02:00
2023-06-22 16:06:45 +02:00
Lancer Keycloak en *dev* sur le port 8080
2023-06-21 17:49:14 +02:00
2023-06-22 16:06:45 +02:00
```bash
$keycloak_http_port=8080
bin/kc.sh start-dev --http-port ${keycloak_http_port}
```
2023-06-21 17:49:14 +02:00
2023-06-22 16:06:45 +02:00
**Créer un administrateur**
2023-06-21 17:49:14 +02:00
2023-06-22 16:06:45 +02:00
Au lancement du serveur
2023-06-21 17:49:14 +02:00
2023-06-22 16:06:45 +02:00
```bash
export KEYCLOAK_ADMIN=<username>
export KEYCLOAK_ADMIN_PASSWORD=<password>
bin/kc.sh start-dev
```
2023-06-21 17:49:14 +02:00
2023-06-22 16:06:45 +02:00
En mode "click"
2023-06-21 17:49:14 +02:00
2023-06-22 16:06:45 +02:00
Se connecter à http://localhost:8080/
2023-06-21 17:49:14 +02:00
2023-06-22 16:06:45 +02:00
Créer un username et password admin
2023-06-21 17:49:14 +02:00
2023-06-22 16:06:45 +02:00
Se connecter à http://localhost:8080/admin avec les identifiant admin
id:: 6491bb83-8229-4bcd-a535-5c8da9f0e556
2023-06-21 17:49:14 +02:00
2023-06-22 16:06:45 +02:00
TODO suite avec capture d'ecran ? sinon voir [doc officielle](https://www.keycloak.org/getting-started/getting-started-zip)
2023-06-21 17:49:14 +02:00
## Gestion des royaumes "realm"
2023-06-22 16:06:45 +02:00
Se connecter à http://localhost:8080/admin avec les identifiant admin
2023-06-21 17:49:14 +02:00
2023-06-22 16:06:45 +02:00
Un royaume est un ensemble isolé d'utilisateurs et d'applications géré par un administrateur
2023-06-21 17:49:14 +02:00
2023-06-22 16:06:45 +02:00
Le royaume **master** est seulement utilisé pour gérer Keycloak et ne doit pas être utiliser pour gérer d'autres applications
2023-06-21 17:49:14 +02:00
2023-06-22 16:06:45 +02:00
**Tester le fonctionnement des royaume** voir [getting-started-zip](https://www.keycloak.org/getting-started/getting-started-zip)
2023-06-21 17:49:14 +02:00
2023-06-22 16:06:45 +02:00
suivre bettement les étapes juqu'a arriver au message "hello, myuser" sur [https://www.keycloak.org/app/](https://www.keycloak.org/app/)
2023-06-21 17:49:14 +02:00
2023-06-22 16:06:45 +02:00
**Créer un royaume**
2023-06-21 17:49:14 +02:00
2023-06-22 16:06:45 +02:00
Dans le menu déroulant tout en haut à gauche choisir "Create Realm"
2023-06-21 17:49:14 +02:00
2023-06-22 16:06:45 +02:00
Choisir un nom de royaume "Realm name" puis le créer avec "Create"
2023-06-21 17:49:14 +02:00
2023-06-22 16:06:45 +02:00
**Créer un utilisateur**
2023-06-21 17:49:14 +02:00
2023-06-22 16:06:45 +02:00
ATTENTION : nous allons créer un utilisateur dans le royaume sélectionné dans le menu déroulant tout en haut à gauche, sauf cas particulier, il faudra éviter le royaume **master**
2023-06-21 17:49:14 +02:00
2023-06-22 16:06:45 +02:00
**Créer client**
2023-06-22 15:54:26 +02:00
2023-06-22 16:06:45 +02:00
TODO ajouter nextcloud https://stackoverflow.com/questions/48400812/sso-with-saml-keycloak-and-nextcloud
2023-06-21 17:49:14 +02:00
2023-06-22 16:06:45 +02:00
**User Federation**
permet d'avoir acces à LDAP et Active Directory
TODO Connection au à OpenLDAP https://rob-ferguson.me/keycloak-flowable-and-openldap/
2023-06-22 15:54:26 +02:00
2023-06-22 16:06:45 +02:00
TODO **Identity providers**
2023-06-21 17:49:14 +02:00
## TODO Gestion via la cli
2023-06-22 16:06:45 +02:00
:logbook:
CLOCK: [2023-06-21 Wed 14:43:19]--[2023-06-21 Wed 15:05:04] => 00:21:45
:END:
2023-06-21 17:49:14 +02:00
2023-06-22 16:06:45 +02:00
[doc](https://www.keycloak.org/docs/latest/server_admin/#admin-cli)
2023-06-21 17:49:14 +02:00
# Ressources
2023-06-22 16:06:45 +02:00
https://github.com/thomasdarimont/awesome-keycloak
2023-06-22 15:54:26 +02:00
2023-06-22 16:06:45 +02:00
https://rob-ferguson.me/
2023-06-21 17:49:14 +02:00