Publié le 05/01/2022 par Mayane Maman
Lors de l'article précédent, nous avons testé une authentification via une application de type cloud.
Dans celui-ci, nous allons mettre en place un serveur HTTPD sur un serveur linux de notre réseau local et y déclarer un VirtualHost sur une url spécifique en tant que client OIDC du service Forgerock Identity Cloud.
Prérequis :
disposer d'un tenant FIC et d'un compte administrateur.
avoir déjà créé des utilisateurs sur le tenant (soit localement, soit en les important via un annuaire LDAP externe)
avoir une journey de Login fonctionnelle
disposer d'un nom de domaine (ou modifier le fichier host de notre poste de travail)
un serveur pour installer httpd, ici nous avons utilisé une distribution CentOS (mais httpd s'installe aussi sur d'autres supports)
I) Configuration du client sur Forgerock Identity Cloud
Sur Forgerock Identity Cloud, nous allons devoir créer une application Web sur https://<tenant>.forgeblocks.com/plaform/?realm=<realmName>#/applications :
Attribuer un client ID et un client Secret :
La page où nous voulons rediriger l'authentification devra être configuré sur "Sign-in URLS" en marquant la requête.
Ajouter également les scopes que nous voulons appliquer pour l’authentification.
II) Configuration HTTPD
Dans un premier temps:
Installons un serveur HTTPD
$ sudo yum install httpd
Configurons un support SSL:
-Installation du module:
$ sudo yum install httpd mod_ssl -y
-Vérification que le module est proprement installé :
$ rpm -q mod_ssl
mod_ssl-2.4.6-80.el7.x86_64
-Vérification que le module soit chargé dans le serveur HTTPD :
$ apachectl -M | grep ssl
ssl_module (shared)
Installation du module OpenID Connect :
$ sudo yum install mod_auth_openidc
Pour vérifier s’il a bien été mis en place dans le serveur httpd, il faut se positionner dans ce fichier : /etc/httpd/conf.modules.d/10-auth_openidc.conf
Lorsque les installations ont été réalisées, nous passons à la partie configuration des fichiers.
Premier fichier à configurer /etc/httpd/conf/httpd.conf :
Ajoutons le nom du serveur que nous voulons attribué. Par exemple :
ServerName www.lab.leviam.fr
Et le dossier où se trouvent les fichiers des serveurs :
DocumentRoot "/var/www/www.lab"
Deuxième fichier à configurer est celui que nous allons créer dans le répertoire conf.d /etc/httpd
/conf.d/oidc.lab.leviam.fr :
Ce serveur servira en tant que client OpenIDConnect. Pour cela, il faut les données du serveur côté Forgerock.
Tout d’abord indiquer le nom du serveur, l’emplacement du document root et l’index.
L'emplacement du DocumentRoot est le répertoire qui contiendra toutes les pages web et tous ses éléments.
Dans ce répertoire, nous allons créer un fichier test et un répertoire nommé "secure" qui contiendra le fichier dont nous voulons accéder en s'authentifiant.
<VirtualHost oidc.lab.leviam.fr:443>
ServerName oidc.lab.leviam.fr:443
DocumentRoot /var/www/oidc.lab
DirectoryIndex index.html
#Configuration des certificats SSL
ServerAlias oidc.lab.leviam.fr
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/oidc.lab.leviam.fr/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/oidc.lab.leviam.fr/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/oidc.lab.leviam.fr/chain.pem
Maintenant, nous marquons toutes les données qui nous permettront de nous connecter. Ces configurations ont été trouvées ici.
OIDCProviderMetadataURL https://<tenant>.forgeblocks.com/am/oauth2/realms/alpha/.well-known/openid-configuration
OIDCClientID OpenIDconnect
OIDCClientSecret password
OIDCCryptoPassphrase passphrase
OIDCRedirectURI https://oidc.lab.leviam.fr/secure/redirect_uri #L'ajouter dans Sign-in URLs de l'application Web dans Forgerock Identity Cloud
OIDCProviderTokenEndpointAuth client_secret_post #Configuration sur Forgerock Identity Cloud dans application -> advanced settings -> Authentication
OIDCOAuthIntrospectionEndpointAuth client_secret_post
OIDCJWKSRefreshInterval 3600
OIDCScope "openid profile email phone address"
<Location /secure/> #path qui nécessite l'authentification
AuthType openid-connect
Require valid-user
</Location>
</VirtualHost>
Suite à ces configurations, il est temps de redémarrer le serveur HTTPD (on pourrait/devrait juste faire un reload de la conf) :
$ sudo service httpd restart
Il est également recommandé d'installer un certificat SSL dont les navigateurs ont confiance. Pour cela nous allons utiliser Certbot.
Pour l'installer, nous pouvons le faire via snapd :
$ sudo yum install snapd
$ sudo systemctl enable --now snapd.socket
Le mettre ensuite à jour :
$ sudo snap install core; sudo snap refresh core
Installer Certbot :
$ sudo snap install --classic certbot
Vérifier que Certbot peut s'exécuter :
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Installer le certificat :
$ sudo certbot --apache
Et enfin dernière étape, tester le renouvellement automatique :
$ sudo certbot renew --dry-run
Finalement, se rendre sur notre site pour vérifier que la connexion est bien sécurisée et que nous pouvons bien nous authentifier via Forgerock Identity Cloud.
Lorsque l'on va sur l'URL : https://oidc.lab.leviam.fr/ l'accès est autorisé de façon anonyme, mais en allant sur l'URL : https://oidc.lab.leviam.fr/secure ,on est redirigé vers la page d'authentification du FIC via le flux oidc.
Note : Si vous avez déjà une page Forgerock Identity Cloud authentifié en administrateur, il faudra ouvrir un nouvel onglet en navigation privée pour que cela puisse fonctionner.