Accueil > OpenID Connect OAuth Server par DnC > Développer > Installation du serveur OAuthSD

Installation du serveur OAuthSD

L’installation d’un serveur OAuthSD se fait dans un environnement Linux décrit dans cet article.

Bien que faisant appel à Composer, cette installation est en partie manuelle, ainsi que la configuration du serveur et le chargement d’un jeu initial de données.

Prérequis

- hôte Linux : CentOs 6.5 ou 7 (préféré), CloudLinux 6 ou 7, RHEL 6 ou 7, [1]. Voir les détails au paragraphe : "Environnement matériel et logiciel du serveur".

Pour installer et administrer la configuration décrite ci-dessous, il sera utile de disposer d’un "panneau d’administration" pour la gestion de l’hôte et des serveurs. WHM/cPanel est un bon choix [2]. On peut également utiliser Webmin.

- serveur Apache 2.x [3]. La sécurité de fonctionnement d’OIDC exige une installation sur un domaine sécurisé par TLS (protocole https://).
- PHP 5.6 ou 7.x (7.x obligatoire si /crud/api.php est installé) [4].
- serveur de base de données MySQL ou équivalent [5] + phpMyAdmin (ou équivalent)
- serveur sshd/sFTP,
- client SSH (console et sFTP), accès par l’user root.

Installation d’OAuthSD

1. Installer le code d’OAuthSD

- Télécharger le code depuis GitHub : https://github.com/bdegoy/oauthsd, -> ’Clone or download" -> "Download ZIP.
- Installer le contenu dé-zippé dans le répertoire web du domaine(web document root) [6] .

2. Installer et exécuter Composer

Voir : Installer (ou mettre à jour) OAuthSD avec Composer .

- Ouvrir un client SSH,
- se déplacer dans le répertoire web du domaine, exemple pour CentOS :
user@mon.site.com [~]# cd public_html

- Si le code d’OAuthSD comporte le fichier /composer.phar et le dossier /composer/, alors Composer est déjà téléversé sur l’hôte pour une utilisation locale. En cas de doute, vous pouvez vérifier l’installation de Composer en suivant les indications de cet article : Installer (ou mettre à jour) OAuthSD avec Composer .

- Sinon, se reporter à l’installation de Composer. Le plus simple est une installation locale (dans le répertoire web du domaine).

- Exécuter user@mon.site.com [~]# composer install.

A l’issue, les packages utilisés par OAuthSD se trouvent installés dans le dossier /vendor.

3. Initialiser les données
- avec le client SSH, accéder au serveur MySQL et exécuter le contenu du fichier : /install/data.sql.

4. Configuration initiale

- Connexion à la base de données : ouvrir le fichier /commons/keepsecret/database.php ; dans la fonction make_credentials, inscrire les valeurs correctes pour dmname, host, driver, port et prefix.

- Si la version téléchargé inclut l’API HTTP REST + TreeQL (répertoire http.api), il convient d’adapter les valeurs du fichier de configuration /http.api/api_configure.php.

- Options et réglages : les valeurs par défaut suffisent dans la plupart des cas. Pour plus d’information, voir Paramétrage d’OAuthSD.

5. Créer un répertoire pour les sessions d’OAuthSD
- créer un répertoire "sessions_oauthsd" un niveau au dessus du répertoire web du domaine.
- attribuer à ce répertoire le même user/group et les mêmes permissions que le répertoire web du domaine.

6. Programmer une tâche Cron

Le script cron.php doit être appelé toutes les minutes afin d’exécuter différentes tâches dont l’élaboration de synthèses statistiques (table oidc_stats).

Une tâche cron est programmée pour exécuter toutes les minutes la commande suivante (exemple pour Linux) :
wget -O /dev/null https://<serveur-url>/cron/cron.php >/dev/null 2>&1

Environnement matériel et logiciel du serveur

Connexion au réseau : routeur et firewall
Un serveur OIDC est sensible aux attaques par déni de service. On évitera de router les paquets TCP entrants à l’aide d’une DMZ. On préfèrera configurer un filtrage de port au niveau du routeur/firewall et une règle de routage NAT/PAT pour lier le port entrant (443) à l’IP fixe du serveur sur le réseau local.
Un Pare-feu à états (stateful inspection firewall) serait favorable pour faire face aux attaques de type DDOS. Un routeur/firewall dédié à la connexion du serveur serait favorable à l’adoption de paramètres de filtrage adaptés.

Matériel, RAM et Disques
Un serveur OIDC doit répondre rapidement à de nombreuses requêtes. Une machine dédiée à OAuthSD serait favorable. Le processeur doit être performant (2 à 4 cœurs), la mémoire suffisante ; un disque SSD serait favorable.
RAM : 4 GB minimum.
Partition / : 40GB minimum.
Partition swap : même taille que la RAM.

Sauvegarde
Il faut prévoir un disque interne dédié à la sauvegarde ainsi qu’une sauvegarde externe. Les sauvegardes pourront être réalisées à l’aide du panel d’administration du serveur. La capacité du disque de sauvegarde interne sera égal à 3 fois au moins la capacité du disque principal.

Administration à distance
Il est utile de disposer d’un tunnel SSH ou VPN pour accéder au panneau d’administration ainsi qu’au serveur sshd à l’aide d’une console distante.

Connexion Internet pour les tests
Certains tests nécessitent la connexion du serveur au réseau Internet. Il en est ainsi par exemple des tests décrits dans la rubrique Tests et certification. Cette connexion peut-être fermée par la suite si le serveur doit fonctionner dans un réseau local ou privé.

Avertissement quant aux proxies
Si un proxy doit être installé en amont du serveur ( par ex. un répartiteur de charge), il est important qu’il ait une IP fixe vu du serveur OAuthSD et qu’il transmette l’IP de la requête d’origine par la déclaration HTTP_X_FORWARDED_FOR.
Voir Vérification de l’origine de la requête reçue par un serveur de ressource.

Notes

[1Désactiver SELinux.

[2Offrant notamment le stateful firewall CSF-LFD, l’outil de configuration EasyApache, des outils de sécurité avec un audit très complet et permettant de configurer facilement un certificat SSL/TLS pour un fonctionnement en https://.

[3Nginx incompatible. Ne pas configurer de proxy inverse

[4Autoriser allow_url_fopen dans php.ini.

[5PostGres SQL incompatible.

[6C’est à dire le répertoire /public_html (dans le cas de CentOS). Notez que OAuthSD comprend un répertoire /public_html/web/ : ne pas confondre !