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.
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 :
app/Http/Controllers/SocialiteController.php : contrôleur permettant l’authentification/création/mise à jour de l'utilisateur par un SSO
app/Providers/Socialite/GenericSocialiteProvider.php : un fournisseur comme Keycloak, utilie si vous utilisez un SSO qui n'a pas encore de fournisseurs produit par la communauté Laravel
Les fichiers modifiés :
resources/views/auth/login.blade.php : pour ajouter les boutons redirigeant vers le SSO seulement si activé
config/services.php : ajout des configurations du nouveau contrôleur et des 2 fournisseurs (Keycloak et Generic)
routes/web.php ajout de 2 routes
/auth.redirect/{driver} qui redirige l'utilisateur vers le SSO
/auth/callback/{driver} vers laquelle l'utilisateur est redirigé par le SSO une fois authentifié
app/Providers/AppServiceProvider.php pour enregistrer les deux fournisseurs (Keycloak et Generic)
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 :
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.
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.
Cette PR ajoute 2 nouvelles dépendances :
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 :
app/Http/Controllers/SocialiteController.php
: contrôleur permettant l’authentification/création/mise à jour de l'utilisateur par un SSOapp/Providers/Socialite/GenericSocialiteProvider.php
: un fournisseur comme Keycloak, utilie si vous utilisez un SSO qui n'a pas encore de fournisseurs produit par la communauté LaravelLes fichiers modifiés :
resources/views/auth/login.blade.php
: pour ajouter les boutons redirigeant vers le SSO seulement si activéconfig/services.php
: ajout des configurations du nouveau contrôleur et des 2 fournisseurs (Keycloak et Generic)routes/web.php
ajout de 2 routes/auth.redirect/{driver}
qui redirige l'utilisateur vers le SSO/auth/callback/{driver}
vers laquelle l'utilisateur est redirigé par le SSO une fois authentifiéapp/Providers/AppServiceProvider.php
pour enregistrer les deux fournisseurs (Keycloak et Generic)Configuration
Pour activer l'intégration d'un WebSSO, par exemple Keycloak, il suffit d'ajouter dans le fichier
.env
:Ainsi que la configuration dédié à Keycloak que l'ont retrouve sur le site https://socialiteproviders.com, par exemple :
Enfin vous pouvez :
Pour la création et la mise à jour il y a 3 paramètres supplémentaires :
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 :)