gestion mariadb et ressources

This commit is contained in:
tdavid 2023-06-22 15:54:26 +02:00
parent 343d683581
commit aaf1285e76

View file

@ -1,30 +1,32 @@
# Contexte # Contexte
Keycloak est un Identity Access Manager *IAM* open-source permettant de faire du Single-Sign-On *SS0*, c'est à dire d'utiliser un seul compte pour se connecter à différents services. - 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.
Keycloak supporte principalement 2 protocoles d'authentification - Keycloak supporte principalement 2 protocoles d'authentification
- *SAML 2.0* (Security Assertion Markup Language) - *SAML 2.0* (Security Assertion Markup Language)
- authentification de l'utilisateur - authentification de l'utilisateur
- SAML assertion (XML signé numeriquement par le royaume) contenant les information sur les accés de l'utilisateur - SAML assertion (XML signé numeriquement par le royaume) contenant les information sur les accés de l'utilisateur
- accés au service - accés au service
- via un SAML assertion - via un SAML assertion
- *OIDC* (OpenID Connect) - *OIDC* (OpenID Connect)
- authentification de l'utilisateur - authentification de l'utilisateur
- -> identity token : infos utilisateur qui l'indentifie - -> identity token : infos utilisateur qui l'indentifie
- -> access token : information sur les accés de l'utilisateur, signé numeriquement par le royaume - -> access token : information sur les accés de l'utilisateur, signé numeriquement par le royaume
- accés au service - accés au service
- via un access token - via un access token
- [featureset et presentation](video https://www.youtube.com/watch?v=FyVHNJNriUQ?=8m30s)
# Installation # Installation
@ -32,55 +34,70 @@ Keycloak supporte principalement 2 protocoles d'authentification
- ressources - ressources
- [doc officielle](https://www.keycloak.org/getting-started/getting-started-zip) - [doc officielle](https://www.keycloak.org/getting-started/getting-started-zip)
- [git de keycloak](https://github.com/keycloak/keycloak/releases) - [git de keycloak](https://github.com/keycloak/keycloak/releases)
- Installer OpenJDK - Installer OpenJDK
- -
```bash ```bash
apt install openjdk-11-jre apt install openjdk-11-jre
``` ```
- Lister les release - Lister les release
- -
```bash ```bash
git ls-remote --tags https://github.com/keycloak/keycloak git ls-remote --tags https://github.com/keycloak/keycloak
``` ```
- Récupérer et extraire le zip de la release souhaité - Récupérer et extraire le zip de la release souhaité
- -
```bash ```bash
keycloak_release=21.1.1 keycloak_release=21.1.1
keycloak_zip=keycloak-${keycloak_release}.zip keycloak_zip=keycloak-${keycloak_release}.zip
wget https://github.com/keycloak/keycloak/releases/download/${keycloak_release}/keycloak-${keycloak_release}.zip wget https://github.com/keycloak/keycloak/releases/download/${keycloak_release}/keycloak-${keycloak_release}.zip
unzip $keycloak_zip unzip $keycloak_zip
``` ```
- Lancer keycloak depuis son dossier - Lancer keycloak depuis son dossier
- -
```bash ```bash
keycloak_folder=${keycloak_zip%".zip"} keycloak_folder=${keycloak_zip%".zip"}
cd $keycloak_folder cd $keycloak_folder
bin/kc.sh start-dev bin/kc.sh start-dev
``` ```
## Brancher une base de donnée de prod ## Brancher une base de donnée de prod
- [doc officielle](https://www.keycloak.org/server/db) - [doc officielle configuration db](https://www.keycloak.org/server/db)
- Par defaut le schema `keyclaok` est utilisé
- **Mariadb** - **Mariadb**
- Démarrer le serveur keycloak et (re-)définit les options de configuration - pour l'installation et plus de détails coir la [doc evolix installation de mariadb](https://wiki.evolix.org/HowtoMySQL)
- - (Recommandé )créer une base de donnée et utilisateur associé pour keycloak voir
```bash
bin/kc.sh start --db mariadb --db-url-host mymariadb --db-username myuser --db-password change_me -
``` ```bash
db_name=keycloak
user=evocloak
# mysqladmin create $db_name
# mysql
mysql> GRANT ALL PRIVILEGES ON $db_name.* TO '$user'@'%' IDENTIFIED BY '$password';
```
- Démarrer le serveur keycloak et (re-)définit les options de configuration (depuis le dossier keycloak)
-
```bash
bin/kc.sh start --db mariadb --db-url-host mymariadb --db-username evocloak --db-password change_me
```
## Haute disponibilité ## Haute disponibilité
@ -160,18 +177,24 @@ Keycloak supporte principalement 2 protocoles d'authentification
- 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** - 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**
- TODO finir - **Créer client**
- TODO **Créer client** - TODO ajouter nextcloud https://stackoverflow.com/questions/48400812/sso-with-saml-keycloak-and-nextcloud
- **User Federation**
permet d'avoir acces à LDAP et Active Directory
- TODO Connection au à OpenLDAP https://rob-ferguson.me/keycloak-flowable-and-openldap/
- TODO **Identity providers**
## TODO Gestion via la cli ## TODO Gestion via la cli
:logbook:
CLOCK: [2023-06-21 Wed 14:43:19]--[2023-06-21 Wed 15:05:04] => 00:21:45
:END:
- [doc](https://www.keycloak.org/docs/latest/server_admin/#admin-cli) - [doc](https://www.keycloak.org/docs/latest/server_admin/#admin-cli)
# Ressources # Ressources
https://github.com/thomasdarimont/awesome-keycloak - https://github.com/thomasdarimont/awesome-keycloak
- https://rob-ferguson.me/