clean up le style

This commit is contained in:
tdavid 2023-06-22 16:06:45 +02:00
parent aaf1285e76
commit 2dc470bae6

View file

@ -1,200 +1,170 @@
# Contexte # Contexte
- 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 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 2 protocoles d'authentification, *SAML 2.0* et *OIDC*
- *SAML 2.0* (Security Assertion Markup Language) [featureset et presentation](video https://www.youtube.com/watch?v=FyVHNJNriUQ?=8m30s)
- authentification 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
- via un SAML assertion
- *OIDC* (OpenID Connect)
- authentification de l'utilisateur
- -> identity token : infos utilisateur qui l'indentifie
- -> access token : information sur les accés de l'utilisateur, signé numeriquement par le royaume
- accés au service
- via un access token
- [featureset et presentation](video https://www.youtube.com/watch?v=FyVHNJNriUQ?=8m30s)
# Installation # Installation
## En dur ## En dur
- 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 configuration db](https://www.keycloak.org/server/db) [doc officielle configuration db](https://www.keycloak.org/server/db)
- Par defaut le schema `keyclaok` est utilisé Par defaut le schema `keyclaok` est utilisé
- **Mariadb** **Mariadb**
- pour l'installation et plus de détails coir la [doc evolix installation de mariadb](https://wiki.evolix.org/HowtoMySQL) 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 (Recommandé )créer une base de donnée et utilisateur associé pour keycloak voir
- ```bash
```bash db_name=keycloak
db_name=keycloak user=evocloak
user=evocloak # mysqladmin create $db_name
# mysqladmin create $db_name # mysql
# mysql mysql> GRANT ALL PRIVILEGES ON $db_name.* TO '$user'@'%' IDENTIFIED BY '$password';
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) Démarrer le serveur keycloak et (re-)définit les options de configuration (depuis le dossier keycloak)
- ```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 ```
```
## Haute disponibilité ## Haute disponibilité
- keycloak est conçu pour fonctionner en haute disponibilitée avec [infinispan](https://infinispan.org/) ( In-Memory Distributed Data Store) keycloak est conçu pour fonctionner en haute disponibilitée 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
# Utilisation # Utilisation
## Administration de Keycloak ## Administration de Keycloak
- On supposera que nous nous trouvons dans le dossier d'installation keycloack On supposera que nous nous trouvons dans le dossier d'installation keycloack
- ```bash
```bash cd $keycloak_folder
cd $keycloak_folder ```
```
- Voir les option de démarrage / aide Voir les option de démarrage / aide
- ```bash
```bash bin/kc.sh start-dev --help
bin/kc.sh start-dev --help ```
```
- **Lancer Keycloak** **Lancer Keycloak**
- Lancer Keycloak en *dev* sur le port 8080 Lancer Keycloak en *dev* sur le port 8080
- ```bash
```bash $keycloak_http_port=8080
$keycloak_http_port=8080 bin/kc.sh start-dev --http-port ${keycloak_http_port}
bin/kc.sh start-dev --http-port ${keycloak_http_port} ```
```
- **Créer un administrateur** **Créer un administrateur**
- Au lancement du serveur Au lancement du serveur
- ```bash
```bash export KEYCLOAK_ADMIN=<username>
export KEYCLOAK_ADMIN=<username> export KEYCLOAK_ADMIN_PASSWORD=<password>
export KEYCLOAK_ADMIN_PASSWORD=<password> bin/kc.sh start-dev
bin/kc.sh start-dev ```
```
- En mode "click" En mode "click"
- Se connecter à http://localhost:8080/ Se connecter à http://localhost:8080/
- Créer un username et password admin 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
id:: 6491bb83-8229-4bcd-a535-5c8da9f0e556 id:: 6491bb83-8229-4bcd-a535-5c8da9f0e556
- TODO suite avec capture d'ecran ? sinon voir [doc officielle](https://www.keycloak.org/getting-started/getting-started-zip) TODO suite avec capture d'ecran ? sinon voir [doc officielle](https://www.keycloak.org/getting-started/getting-started-zip)
## Gestion des royaumes "realm" ## Gestion des royaumes "realm"
- Se connecter à http://localhost:8080/admin avec les identifiant admin Se connecter à http://localhost:8080/admin avec les identifiant admin
- Un royaume est un ensemble isolé d'utilisateurs et d'applications géré par un administrateur Un royaume est un ensemble isolé d'utilisateurs et d'applications géré par un administrateur
- Le royaume **master** est seulement utilisé pour gérer Keycloak et ne doit pas être utiliser pour gérer d'autres applications Le royaume **master** est seulement utilisé pour gérer Keycloak et ne doit pas être utiliser pour gérer d'autres applications
- **Tester le fonctionnement des royaume** voir [getting-started-zip](https://www.keycloak.org/getting-started/getting-started-zip) **Tester le fonctionnement des royaume** voir [getting-started-zip](https://www.keycloak.org/getting-started/getting-started-zip)
- suivre bettement les étapes juqu'a arriver au message "hello, myuser" sur [https://www.keycloak.org/app/](https://www.keycloak.org/app/) suivre bettement les étapes juqu'a arriver au message "hello, myuser" sur [https://www.keycloak.org/app/](https://www.keycloak.org/app/)
- **Créer un royaume** **Créer un royaume**
- Dans le menu déroulant tout en haut à gauche choisir "Create Realm" Dans le menu déroulant tout en haut à gauche choisir "Create Realm"
- Choisir un nom de royaume "Realm name" puis le créer avec "Create" Choisir un nom de royaume "Realm name" puis le créer avec "Create"
- **Créer un utilisateur** **Créer un utilisateur**
- 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**
- **Créer client** **Créer client**
- TODO ajouter nextcloud https://stackoverflow.com/questions/48400812/sso-with-saml-keycloak-and-nextcloud TODO ajouter nextcloud https://stackoverflow.com/questions/48400812/sso-with-saml-keycloak-and-nextcloud
- **User Federation** **User Federation**
permet d'avoir acces à LDAP et Active Directory permet d'avoir acces à LDAP et Active Directory
- TODO Connection au à OpenLDAP https://rob-ferguson.me/keycloak-flowable-and-openldap/ TODO Connection au à OpenLDAP https://rob-ferguson.me/keycloak-flowable-and-openldap/
- TODO **Identity providers** 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/
https://rob-ferguson.me/