release 1.6.2 : gardes session OIDC, règle PHP-FPM www-data #72
@@ -9,6 +9,15 @@ Format : [Keep a Changelog](https://keepachangelog.com/fr/1.0.0/) — versionnag
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## [1.6.2] - 2026-05-15
|
||||||
|
|
||||||
|
### Corrigé
|
||||||
|
- `oidc/start.php` : garde explicite après `session_start()` — erreur 500 immédiate si `session.save_path` est inaccessible, évite un flux OIDC condamné à l'échec silencieux
|
||||||
|
- `oidc/callback.php` : même garde de session ; `error_log` en cas d'échec du contrôle de state pour faciliter le diagnostic
|
||||||
|
- `consignes.md` : règle ajoutée — pool PHP-FPM avec `user = www-data`, pas le compte admin personnel
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## [1.6.1] - 2026-05-15
|
## [1.6.1] - 2026-05-15
|
||||||
|
|
||||||
### Corrigé
|
### Corrigé
|
||||||
|
|||||||
+3
-2
@@ -90,8 +90,8 @@ Chemin serveur : `varlog:/var/www/lan.acegrp.varlog/`
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
cp /var/www/lan.acegrp.abonnel-www/.env /tmp/.env.bak
|
cp /var/www/lan.acegrp.abonnel-www/.env /tmp/.env.bak
|
||||||
rm -rf /var/www/lan.acegrp.abonnel-www
|
sudo rm -rf /var/www/lan.acegrp.abonnel-www
|
||||||
git clone --depth=1 https://cedricAbonnel:TOKEN@git.abonnel.fr/cedricAbonnel/folio.git /var/www/lan.acegrp.abonnel-www
|
git clone --depth=1 https://git.abonnel.fr/cedricAbonnel/folio.git /var/www/lan.acegrp.abonnel-www
|
||||||
cp /tmp/.env.bak /var/www/lan.acegrp.abonnel-www/.env
|
cp /tmp/.env.bak /var/www/lan.acegrp.abonnel-www/.env
|
||||||
cd /var/www/lan.acegrp.abonnel-www && composer install --no-dev --optimize-autoloader
|
cd /var/www/lan.acegrp.abonnel-www && composer install --no-dev --optimize-autoloader
|
||||||
php database/migrate.php
|
php database/migrate.php
|
||||||
@@ -106,3 +106,4 @@ git -C /var/www/lan.acegrp.abonnel-www config user.name 'Cédrix'
|
|||||||
- Ne **jamais** écraser le `.env` serveur (ni scp, ni réécriture). Indiquer les variables à l'utilisateur pour qu'il les saisisse lui-même.
|
- Ne **jamais** écraser le `.env` serveur (ni scp, ni réécriture). Indiquer les variables à l'utilisateur pour qu'il les saisisse lui-même.
|
||||||
- Ne **jamais** versionner `data/`, `.env`, ou `vendor/` dans le dépôt folio.
|
- Ne **jamais** versionner `data/`, `.env`, ou `vendor/` dans le dépôt folio.
|
||||||
- Toujours bumper la version **et** mettre à jour le changelog dans le même commit que la PR.
|
- Toujours bumper la version **et** mettre à jour le changelog dans le même commit que la PR.
|
||||||
|
- Dans les pools PHP-FPM, toujours utiliser `user = www-data` / `group = www-data`. `cedrix` est un admin ordinaire, pas un compte de service.
|
||||||
|
|||||||
@@ -39,7 +39,15 @@ if (!$OIDC_ISSUER || !$OIDC_CLIENT_ID || !$OIDC_REDIRECT_URI) {
|
|||||||
$tokenEndpoint = $OIDC_ISSUER . '/protocol/openid-connect/token';
|
$tokenEndpoint = $OIDC_ISSUER . '/protocol/openid-connect/token';
|
||||||
$userInfoEndpoint = $OIDC_ISSUER . '/protocol/openid-connect/userinfo';
|
$userInfoEndpoint = $OIDC_ISSUER . '/protocol/openid-connect/userinfo';
|
||||||
|
|
||||||
|
if (session_status() !== PHP_SESSION_ACTIVE) {
|
||||||
|
error_log('[OIDC/callback] session_start() a échoué — vérifier session.save_path');
|
||||||
|
http_response_code(500);
|
||||||
|
echo $debug ? 'Erreur de session (session.save_path inaccessible ?).' : 'Erreur interne.';
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
if (!isset($_GET['state'], $_SESSION['oidc_state']) || !hash_equals((string)$_SESSION['oidc_state'], (string)$_GET['state'])) {
|
if (!isset($_GET['state'], $_SESSION['oidc_state']) || !hash_equals((string)$_SESSION['oidc_state'], (string)$_GET['state'])) {
|
||||||
|
error_log('[OIDC/callback] State invalide — GET:' . ($_GET['state'] ?? 'absent') . ' SESSION:' . (isset($_SESSION['oidc_state']) ? 'présent' : 'absent') . ' session_id:' . session_id());
|
||||||
http_response_code(400);
|
http_response_code(400);
|
||||||
echo $debug ? 'State invalide.' : 'Requête invalide.';
|
echo $debug ? 'State invalide.' : 'Requête invalide.';
|
||||||
exit;
|
exit;
|
||||||
|
|||||||
@@ -9,6 +9,13 @@ require_once dirname(__DIR__, 2) . '/vendor/autoload.php';
|
|||||||
require_once dirname(__DIR__, 2) . '/config/config.php';
|
require_once dirname(__DIR__, 2) . '/config/config.php';
|
||||||
require_once dirname(__DIR__, 2) . '/bootstrap.php';
|
require_once dirname(__DIR__, 2) . '/bootstrap.php';
|
||||||
|
|
||||||
|
if (session_status() !== PHP_SESSION_ACTIVE) {
|
||||||
|
error_log('[OIDC/start] session_start() a échoué — vérifier session.save_path');
|
||||||
|
http_response_code(500);
|
||||||
|
echo 'Erreur de session. Contactez l\'administrateur.';
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
if (!function_exists('env')) {
|
if (!function_exists('env')) {
|
||||||
function env(string $key, ?string $default = null): ?string
|
function env(string $key, ?string $default = null): ?string
|
||||||
{
|
{
|
||||||
|
|||||||
+1
-1
@@ -1 +1 @@
|
|||||||
1.6.1
|
1.6.2
|
||||||
|
|||||||
Reference in New Issue
Block a user