conventions ...
This commit is contained in:
parent
2b389fee35
commit
ae436276e8
165
HowtoKeycloak.md
165
HowtoKeycloak.md
|
@ -1,131 +1,126 @@
|
|||
# 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.
|
||||
---
|
||||
categories: security
|
||||
title: HowtoKeycloak
|
||||
...
|
||||
|
||||
Keycloak supporte 2 protocoles d'authentification, *SAML 2.0* et *OIDC*
|
||||
[Keycloak](https://www.keycloak.org/) 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.
|
||||
|
||||
[featureset et presentation](video https://www.youtube.com/watch?v=FyVHNJNriUQ?=8m30s)
|
||||
## Installation
|
||||
|
||||
# Installation
|
||||
liens : [documentation officielle](https://www.keycloak.org/getting-started/getting-started-zip), [git de keycloak](https://github.com/keycloak/keycloak/releases)
|
||||
|
||||
## En dur
|
||||
Installer Keycloak en dur avec OpenJDK
|
||||
|
||||
ressources
|
||||
|
||||
[doc officielle](https://www.keycloak.org/getting-started/getting-started-zip)
|
||||
|
||||
[git de keycloak](https://github.com/keycloak/keycloak/releases)
|
||||
|
||||
Installer OpenJDK
|
||||
|
||||
```bash
|
||||
apt install openjdk-11-jre
|
||||
```{.bash}
|
||||
# apt install openjdk-11-jre
|
||||
```
|
||||
|
||||
Lister les release
|
||||
Lister les releases
|
||||
|
||||
```bash
|
||||
git ls-remote --tags https://github.com/keycloak/keycloak
|
||||
```{.bash}
|
||||
$ git ls-remote --tags https://github.com/keycloak/keycloak
|
||||
```
|
||||
|
||||
Récupérer et extraire le zip de la release souhaité
|
||||
|
||||
```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
|
||||
```{.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
|
||||
|
||||
$ keycloak_folder=${keycloak_zip%".zip"}
|
||||
```
|
||||
|
||||
Lancer keycloak depuis son dossier
|
||||
## Configuration
|
||||
|
||||
```bash
|
||||
keycloak_folder=${keycloak_zip%".zip"}
|
||||
cd $keycloak_folder
|
||||
bin/kc.sh start-dev
|
||||
> Note : on peut lancer keycloak en mode *dev* sans aucune configuration pour tester voir [administration](#administration)
|
||||
On supposera que nous nous trouvons dans le dossier d'installation Keycloack
|
||||
|
||||
### Créer un administrateur
|
||||
|
||||
*Ou au lancement du serveur*
|
||||
|
||||
```{.bash}
|
||||
export KEYCLOAK_ADMIN=<username>
|
||||
export KEYCLOAK_ADMIN_PASSWORD=<password>
|
||||
bin/kc.sh start-dev
|
||||
```
|
||||
|
||||
## Brancher une base de donnée de prod
|
||||
*En mode "click"*
|
||||
|
||||
[doc officielle configuration db](https://www.keycloak.org/server/db)
|
||||
Se connecter à http://localhost:8080/ et créer un username et password admin
|
||||
|
||||
Par defaut le schema `keyclaok` est utilisé
|
||||
Se connecter à http://localhost:8080/admin avec les identifiant admin
|
||||
|
||||
### Base de donnée
|
||||
|
||||
Keycloak en production à besoin d'un accés à une base de donné
|
||||
|
||||
lien : [documentation keycloak configuration bdd](https://www.keycloak.org/server/db)
|
||||
|
||||
> Note : par défaut le schéma sera `keyclaok` est utilisé
|
||||
**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 la configuration de Mariadb voir [/HowtoMySQL]()
|
||||
|
||||
(Recommandé )créer une base de donnée et utilisateur associé pour keycloak voir
|
||||
Il faut créer une base de donnée et utilisateur associé pour Keycloak
|
||||
|
||||
```bash
|
||||
db_name=keycloak
|
||||
user=evocloak
|
||||
# mysqladmin create $db_name
|
||||
# mysql
|
||||
mysql> GRANT ALL PRIVILEGES ON $db_name.* TO '$user'@'%' IDENTIFIED BY '$password';
|
||||
```{.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)
|
||||
(Recommandé) Configuration par via fichier configuration
|
||||
|
||||
```bash
|
||||
bin/kc.sh start --db mariadb --db-url-host mymariadb --db-username evocloak --db-password change_me
|
||||
Modifier le fichier `conf/keycloak.conf`
|
||||
|
||||
TODO montrer modif faire etc
|
||||
|
||||
Ou démarrer le serveur Keycloak en définissant les options de configuration
|
||||
|
||||
```{.bash}
|
||||
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
|
||||
|
||||
# Utilisation
|
||||
## Administration
|
||||
|
||||
## Administration de Keycloak
|
||||
Lancer Keycloak en mode *dev*, pour tester Keycloak en http avec des valeurs par defaut ou en mode *prod*
|
||||
|
||||
On supposera que nous nous trouvons dans le dossier d'installation keycloack
|
||||
|
||||
```bash
|
||||
cd $keycloak_folder
|
||||
```{.bash}
|
||||
$ cd $keycloak_folder
|
||||
$ bin/kc.sh start-dev
|
||||
|
||||
$ bin/kc.sh start
|
||||
```
|
||||
|
||||
Voir les option de démarrage / aide
|
||||
|
||||
```bash
|
||||
bin/kc.sh start-dev --help
|
||||
```{.bash}
|
||||
bin/kc.sh start-dev --help
|
||||
bin/kc.sh start --help
|
||||
```
|
||||
|
||||
**Lancer Keycloak**
|
||||
**Lancer Keycloak** en *dev* sur le port 8080
|
||||
|
||||
Lancer Keycloak en *dev* sur le port 8080
|
||||
|
||||
```bash
|
||||
$keycloak_http_port=8080
|
||||
bin/kc.sh start-dev --http-port ${keycloak_http_port}
|
||||
```{.bash}
|
||||
keycloak_http_port=8080
|
||||
bin/kc.sh start-dev --http-port ${keycloak_http_port}
|
||||
```
|
||||
|
||||
**Créer un administrateur**
|
||||
### TODO Build et lancer en mode prod
|
||||
|
||||
Au lancement du serveur
|
||||
|
||||
```bash
|
||||
export KEYCLOAK_ADMIN=<username>
|
||||
export KEYCLOAK_ADMIN_PASSWORD=<password>
|
||||
bin/kc.sh start-dev
|
||||
```
|
||||
|
||||
En mode "click"
|
||||
|
||||
Se connecter à http://localhost:8080/
|
||||
|
||||
Créer un username et password admin
|
||||
|
||||
Se connecter à http://localhost:8080/admin avec les identifiant admin
|
||||
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)
|
||||
|
||||
## Gestion des royaumes "realm"
|
||||
|
||||
Se connecter à http://localhost:8080/admin avec les identifiant admin
|
||||
### Gestion des royaumes "realm"
|
||||
|
||||
Un royaume est un ensemble isolé d'utilisateurs et d'applications géré par un administrateur
|
||||
|
||||
|
@ -150,17 +145,17 @@ ATTENTION : nous allons créer un utilisateur dans le royaume sélectionné dans
|
|||
TODO ajouter nextcloud https://stackoverflow.com/questions/48400812/sso-with-saml-keycloak-and-nextcloud
|
||||
|
||||
**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 **Identity providers**
|
||||
|
||||
## TODO Gestion via la cli
|
||||
:logbook:
|
||||
CLOCK: [2023-06-21 Wed 14:43:19]--[2023-06-21 Wed 15:05:04] => 00:21:45
|
||||
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)
|
||||
[documentation keycloak](https://www.keycloak.org/docs/latest/server_admin/#admin-cli)
|
||||
|
||||
# Ressources
|
||||
|
||||
|
|
Loading…
Reference in a new issue