fix : gardes session OIDC + règle PHP-FPM www-data (v1.6.2)
- oidc/start.php : arrêt immédiat (500) si session_start() échoue, évite un flux OIDC condamné à l'échec silencieux (ex. session.save_path absent) - oidc/callback.php : même garde + error_log sur échec du contrôle de state pour faciliter le diagnostic (STATE absent/présent + session_id) - consignes.md : règle PHP-FPM — toujours user=www-data, pas le compte admin Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -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
|
||||
|
||||
### Corrigé
|
||||
|
||||
+3
-2
@@ -90,8 +90,8 @@ Chemin serveur : `varlog:/var/www/lan.acegrp.varlog/`
|
||||
|
||||
```bash
|
||||
cp /var/www/lan.acegrp.abonnel-www/.env /tmp/.env.bak
|
||||
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
|
||||
sudo rm -rf /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
|
||||
cd /var/www/lan.acegrp.abonnel-www && composer install --no-dev --optimize-autoloader
|
||||
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** 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.
|
||||
- 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';
|
||||
$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'])) {
|
||||
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);
|
||||
echo $debug ? 'State invalide.' : 'Requête invalide.';
|
||||
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) . '/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')) {
|
||||
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