dbarzin / deming

Management tool for the information security management system / Outil de gestion du système de management de la sécurité de l'information
GNU General Public License v3.0
245 stars 62 forks source link

Feat: OpenID Connect #211

Closed c-jar closed 3 weeks ago

c-jar commented 3 weeks ago

Bonjour,

Tout d'abord merci pour cette merveilleuse application ! Cette PR est plus conséquente que j'aurais cru, je comprendrais qu'elle ne soit pas accepter en l'état.

Objectif de la PR : Supporter le protocole OpenID Connect afin de permettre à Deming de s'intégrer à une solution WebSSO (Single Sign-On) tel que Keycloak. Cela inclut l'authentification, la création et la mise à jour de l'utilisateur.

image

Cette PR ajoute 2 nouvelles dépendances :

"laravel/socialite": "^5.16",
"socialiteproviders/keycloak": "^5.3"

La première est un composant Laravel permettant d'ajouter le support à OAuth2 et OpenID Connect, la seconde est une extension permettant l'intégration de Keycloak.

Les nouveaux fichiers :

Les fichiers modifiés :

Configuration

Pour activer l'intégration d'un WebSSO, par exemple Keycloak, il suffit d'ajouter dans le fichier .env:

# List of socialite providers separated by a space. Possible value : keycloak, oidc
SOCIALITE_PROVIDERS="keycloak"

Ainsi que la configuration dédié à Keycloak que l'ont retrouve sur le site https://socialiteproviders.com, par exemple :

KEYCLOAK_CLIENT_ID=deming
KEYCLOAK_CLIENT_SECRET=secret
KEYCLOAK_REDIRECT_URI=${APP_URL}auth/callback/keycloak
KEYCLOAK_BASE_URL=https://keycloak.local
KEYCLOAK_REALM=main

Enfin vous pouvez :

Pour la création et la mise à jour il y a 3 paramètres supplémentaires :

# Rôle par défaut si le SSO n'en fournit pas 
KEYCLOAK_DEFAULT_ROLE="auditee"
# Le Claim dans lequel sera renvoyé le rôle
KEYCLOAK_ROLE_CLAIM="resource_access.deming.roles.0"
# Le scope à ajouter pour que le SSO retourne le rôle
KEYCLOAK_ADDITIONAL_SCOPES="roles"

Les même paramètres avec OIDC à la place de KEYCLOK existe pour configurer le fournisseur Generic.

Je reste disponible pour échanger sur cette PR :)

dbarzin commented 3 weeks ago

Merci pour la contribution !

dbarzin commented 3 weeks ago

Pourrais-tu ajouter quelques lignes de documentation comme cela a été fait pour Mercator : https://github.com/dbarzin/mercator/blob/master/INSTALL.md#keycloak-configuration-optional