init et test du markdown
This commit is contained in:
parent
f071074c56
commit
1acde63d3f
177
HowtoKeycloak.md
Normal file
177
HowtoKeycloak.md
Normal file
|
@ -0,0 +1,177 @@
|
|||
# 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 supporte principalement 2 protocoles d'authentification
|
||||
|
||||
- *SAML 2.0* (Security Assertion Markup Language)
|
||||
|
||||
- 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
|
||||
|
||||
# Installation
|
||||
|
||||
## En dur
|
||||
|
||||
- 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
|
||||
```
|
||||
|
||||
- Lister les release
|
||||
|
||||
-
|
||||
```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
|
||||
```
|
||||
|
||||
- Lancer keycloak depuis son dossier
|
||||
|
||||
-
|
||||
```bash
|
||||
keycloak_folder=${keycloak_zip%".zip"}
|
||||
cd $keycloak_folder
|
||||
bin/kc.sh start-dev
|
||||
```
|
||||
|
||||
## Brancher une base de donnée de prod
|
||||
|
||||
- [doc officielle](https://www.keycloak.org/server/db)
|
||||
|
||||
- **Mariadb**
|
||||
|
||||
- Démarrer le serveur keycloak et (re-)définit les options de configuration
|
||||
|
||||
-
|
||||
```bash
|
||||
bin/kc.sh start --db mariadb --db-url-host mymariadb --db-username myuser --db-password change_me
|
||||
```
|
||||
|
||||
## Haute disponibilité
|
||||
|
||||
- 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 de Keycloak
|
||||
|
||||
- On supposera que nous nous trouvons dans le dossier d'installation keycloack
|
||||
|
||||
-
|
||||
```bash
|
||||
cd $keycloak_folder
|
||||
```
|
||||
|
||||
- Voir les option de démarrage / aide
|
||||
|
||||
-
|
||||
```bash
|
||||
bin/kc.sh start-dev --help
|
||||
```
|
||||
|
||||
- **Lancer Keycloak**
|
||||
|
||||
- Lancer Keycloak en *dev* sur le port 8080
|
||||
|
||||
-
|
||||
```bash
|
||||
$keycloak_http_port=8080
|
||||
bin/kc.sh start-dev --http-port ${keycloak_http_port}
|
||||
```
|
||||
|
||||
- **Créer un administrateur**
|
||||
|
||||
- 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
|
||||
|
||||
- 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
|
||||
|
||||
- **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/)
|
||||
|
||||
- **Créer un royaume**
|
||||
|
||||
- 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"
|
||||
|
||||
- **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**
|
||||
|
||||
- TODO finir
|
||||
|
||||
- TODO **Créer client**
|
||||
|
||||
## 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)
|
||||
|
||||
# Ressources
|
||||
|
||||
https://github.com/thomasdarimont/awesome-keycloak
|
||||
|
Loading…
Reference in a new issue