---
# System prepended metadata

title: POC Gestion des droits ARCANE
tags: [' Gestion des droits', Stelliant]

---

---
tags: Stelliant, Gestion des droits
---

# POC Gestion des droits ARCANE

## Qu’est-ce que Keycloak ?

- Gestionnaire d'identification
- Gestionnaire d’autorisation
- Open source (Red Hat)
- Standard Oauth 2.0

## Implementation

### Infrastructure

![](https://i.imgur.com/srtKnUo.png)

### Organisation de la gestion des droits

#### Concept

- Utilisateurs
- Ressources
- Scopes (Read/Write)
- Roles (catégorie d'utilsateur)
- Groupes
- Policies (Allow/Deny)
- Permissions

### Mise en Oeuvre

![](https://i.imgur.com/VpiUxXO.png)


### Exemple concret

1. L’utilisateur arrive sur l’application front. Il peut consulter la liste des articles, créer un article, consulter les commandes, créer une commande.

2. Après être bien identifier, Keycloak va envoyer au front (à travers le backend), une clé d’accès à l’application appelée access_token

3. L’utilisateur va pour utiliser l’application front, avec les différentes page et les différents droits qu’il a (admin / user). Le front va aussi faire des appels REST pour récupérer les informations nécessaires au bon fonctionnement de l’application.

4. L’API, en recevant la requête REST du front-end, va vérifier s’il y a un access_token et demander à Keycloak si le token est bien valide.

5. Keycloak va confirmer ou non la bonne validité de l’access_token.

6. Et l’API, construira, en fonctionne des droits que dispose l’utilisateur, la response REST à la requête demandée.

:::info
:bulb: Rappel !
Nous avons pour notre exemple : 
- Ressource: 
    - **article**
    - **commande**
- Scope: 
    - **lecture**
    - **ecriture**
    - **suppression**
- Role: 
    - **client**
    - **admin**
- Policies: 
    - **Autoriser client**
    - **Autoriser admin**
- Permissions:
    - **Autoriser client en lecture sur l'article**
    - **Autoriser client en lecture/ecriture sur la commande**
    - **Autoriser admin en lecture/ecriture/suppression sur l'article**
    - **Autoriser admin en lecture/ecriture/suppression sur la commande**
:::


### Demo

![](https://i.imgur.com/uwGe7vt.png)

![](https://i.imgur.com/gk0TyMo.jpg)
![](https://i.imgur.com/L1yAmZ7.png)
