6 Commits

Author SHA1 Message Date
fc87b24c4e Merge pull request 'chore(caddy): passage à caddy' (#30) from cmsassot-caddy into develop
All checks were successful
Cadoles/hydra-sql/pipeline/head This commit looks good
Reviewed-on: #30
Reviewed-by: Matthieu Lamalle <mlamalle@cadoles.com>
2024-04-02 09:53:55 +02:00
d1847289bd feat(Dockefile): modification ref tag
All checks were successful
Cadoles/hydra-sql/pipeline/pr-develop This commit looks good
2024-03-29 11:20:28 +01:00
d5718e0a39 feat(node): updated depencies
Some checks reported warnings
Cadoles/hydra-sql/pipeline/pr-develop This commit is unstable
2024-03-29 09:44:38 +01:00
8cde31fc9c chore(caddy): passage à caddy
Some checks reported warnings
Cadoles/hydra-sql/pipeline/pr-develop This commit is unstable
2024-03-28 11:13:41 +01:00
9420354ec0 Merge pull request 'ajout url_link pour personnalisation theme' (#29) from url_link into develop
Some checks reported warnings
Cadoles/hydra-sql/pipeline/head This commit is unstable
Reviewed-on: #29
2024-01-16 11:46:33 +01:00
e320d288cc ajout url_link pour personnalisation theme
Some checks are pending
Cadoles/hydra-sql/pipeline/head Build started...
Cadoles/hydra-sql/pipeline/pr-develop Build started...
2024-01-16 11:45:59 +01:00
9 changed files with 2991 additions and 5582 deletions

5
.env
View File

@ -16,7 +16,7 @@
###> symfony/framework-bundle ### ###> symfony/framework-bundle ###
APP_ENV=dev APP_ENV=dev
APP_SECRET=406ccaa0c76a451fdcc2307ea146cbef APP_SECRET=406ccaa0c76a451fdcc2307ea146cbef
###< symfony/framework-bundle ### URL_LINK="http://localhost"
# configuration bdd # configuration bdd
DSN_REMOTE_DATABASE="pgsql:host='postgres';port=5432;dbname=lasql" DSN_REMOTE_DATABASE="pgsql:host='postgres';port=5432;dbname=lasql"
@ -41,6 +41,3 @@ LOCK_DSN=flock
SENTRY_DSN= SENTRY_DSN=
###< sentry/sentry-symfony ### ###< sentry/sentry-symfony ###
REDIS_DSN=redis://redis:6379 REDIS_DSN=redis://redis:6379
HYDRA_SQL_REDIS_PREFIX=mse
HYDRA_SQL_REDIS_TTL=3600

View File

@ -12,7 +12,7 @@ framework:
# Enables session support. Note that the session will ONLY be started if you read or write from it. # Enables session support. Note that the session will ONLY be started if you read or write from it.
# Remove or comment this section to explicitly disable session support. # Remove or comment this section to explicitly disable session support.
session: session:
handler_id: '%env(REDIS_DSN)%&prefix=%env(string:HYDRA_SQL_REDIS_PREFIX)%&ttl=%env(HYDRA_SQL_REDIS_TTL)%' handler_id: '%env(REDIS_DSN)%'
cookie_secure: auto cookie_secure: auto
cookie_samesite: lax cookie_samesite: lax
storage_factory_id: session.storage.factory.native storage_factory_id: session.storage.factory.native

View File

@ -1,6 +1,7 @@
twig: twig:
globals: globals:
locales: "%locales%" locales: "%locales%"
url_link: '%env(URL_LINK)%'
default_path: '%kernel.project_dir%/templates' default_path: '%kernel.project_dir%/templates'
form_themes: form_themes:
- 'bootstrap_5_layout.html.twig' - 'bootstrap_5_layout.html.twig'

View File

@ -11,7 +11,7 @@ services:
- http_proxy=${http_proxy} - http_proxy=${http_proxy}
- https_proxy=${https_proxy} - https_proxy=${https_proxy}
ports: ports:
- 8082:8080 - 8082:8071
volumes: volumes:
- ./src:/app/src - ./src:/app/src
- ./config:/app/config - ./config:/app/config
@ -30,7 +30,6 @@ services:
- "host.docker.internal:host-gateway" - "host.docker.internal:host-gateway"
environment: environment:
- PHP_FPM_MEMORY_LIMIT=128m - PHP_FPM_MEMORY_LIMIT=128m
- APP_ENV=dev
- APP_LOCALES=fr,en - APP_LOCALES=fr,en
- HYDRA_ADMIN_BASE_URL=http://hydra:4445 - HYDRA_ADMIN_BASE_URL=http://hydra:4445
- TRUSTED_PROXIES=127.0.0.1,REMOTE_ADDR,localhost - TRUSTED_PROXIES=127.0.0.1,REMOTE_ADDR,localhost
@ -42,7 +41,7 @@ services:
- DSN_REMOTE_DATABASE=pgsql:host='postgres';port=5432;dbname=lasql; - DSN_REMOTE_DATABASE=pgsql:host='postgres';port=5432;dbname=lasql;
- HASH_ALGO_LEGACY="sha256" - HASH_ALGO_LEGACY="sha256"
- SECURITY_PATTERN=password,salt,pepper - SECURITY_PATTERN=password,salt,pepper
- CADDY_HTTP_PORT=8071
oidc-test: oidc-test:
image: bornholm/oidc-test:v0.0.0-1-g936a77e image: bornholm/oidc-test:v0.0.0-1-g936a77e
@ -82,7 +81,14 @@ services:
links: links:
- postgres - postgres
healthcheck: healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://127.0.0.1:4444/.well-known/openid-configuration"] test:
[
"CMD",
"wget",
"--spider",
"-q",
"http://127.0.0.1:4444/.well-known/openid-configuration",
]
interval: 10s interval: 10s
timeout: 10s timeout: 10s
retries: 10 retries: 10
@ -107,9 +113,9 @@ services:
- 8085:80 - 8085:80
restart: always restart: always
environment: environment:
PGADMIN_DEFAULT_EMAIL: admin@admin.com PGADMIN_DEFAULT_EMAIL: admin@admin.com
PGADMIN_DEFAULT_PASSWORD: admin PGADMIN_DEFAULT_PASSWORD: admin
PGADMIN_SERVER_JSON_FILE: /pgadminfile/server.json PGADMIN_SERVER_JSON_FILE: /pgadminfile/server.json
volumes: volumes:
- ./misc/compose/pgadmin:/pgadminfile/:ro - ./misc/compose/pgadmin:/pgadminfile/:ro
mariadb: mariadb:

View File

@ -12,5 +12,4 @@ ARG ADDITIONAL_PACKAGES="bash=5.2.15-r0 \
php81-pdo_mysql=${PHP_PKG_VERSION} \ php81-pdo_mysql=${PHP_PKG_VERSION} \
php81-bcmath=${PHP_PKG_VERSION}" php81-bcmath=${PHP_PKG_VERSION}"
FROM reg.cadoles.com/cadoles/symfony:alpine-php-8.1-standalone-2023.11.16-stable.1541.eec311d FROM reg.cadoles.com/cadoles/symfony:alpine-php-8.1-base-2024.3.29-stable.1046.c568908

View File

@ -12,5 +12,5 @@ ARG ADDITIONAL_PACKAGES="bash=5.2.15-r0 \
php81-pdo_mysql=${PHP_PKG_VERSION} \ php81-pdo_mysql=${PHP_PKG_VERSION} \
php81-bcmath=${PHP_PKG_VERSION}" php81-bcmath=${PHP_PKG_VERSION}"
FROM reg.cadoles.com/cadoles/symfony:alpine-php-8.1-standalone-2023.11.16-stable.1541.eec311d FROM reg.cadoles.com/cadoles/symfony:alpine-php-8.1-standalone-2024.3.29-stable.1046.c568908
USER www-data

8459
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -7,7 +7,7 @@
"@symfony/webpack-encore": "^4.1.2", "@symfony/webpack-encore": "^4.1.2",
"core-js": "^3.23.0", "core-js": "^3.23.0",
"regenerator-runtime": "^0.13.9", "regenerator-runtime": "^0.13.9",
"webpack": "^5.74.0", "webpack": "^5.91.0",
"webpack-cli": "^4.10.0", "webpack-cli": "^4.10.0",
"webpack-notifier": "^1.15.0" "webpack-notifier": "^1.15.0"
}, },

View File

@ -3,35 +3,61 @@
Une [LoginApp](https://www.ory.sh/docs/hydra/concepts/login) pour le serveur OpenID Connect [Ory/Hydra](https://github.com/ory/hydra). Une [LoginApp](https://www.ory.sh/docs/hydra/concepts/login) pour le serveur OpenID Connect [Ory/Hydra](https://github.com/ory/hydra).
Elle permet de se connecter à une base de donnée et de vérifier un mot de passe donné sur une mire locale puis d'aller chercher des données demandées Elle permet de se connecter à une base de donnée et de vérifier un mot de passe donné sur une mire locale puis d'aller chercher des données demandées
## Image
- L'image standalone est construite en utilisant l'utilisateur `www-data` pour lancer supervisor (qui va lancer le process php-fpm et caddy, avec ce même user)
- C'est pour cela qu'on fini par "USER www-data" à la fin de `misc/images/hydra-oidc-standalone/Dockerfile`, sinon le conteneur `hydra-sql` ne tournera pas
## Configuration ## Configuration
### Variables d'environnement ### Variables d'environnement
|Variable|Description|Valeur par défaut|Utilisation| | Variable | Description | Valeur par défaut | Utilisation |
|--------|-----------|-----------------|-----------| | ----------------------------------- | ------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------- | ----------- |
|`APP_ENV`|Environnement symfony|prod|dev:prod| | `APP_ENV` | Environnement symfony | prod | dev:prod |
|`APP_DEBUG`|Console de debug symofny|false|true:false| | `APP_DEBUG` | Console de debug symofny | false | true:false |
|`PHP_FPM_MEMORY_LIMIT`|php-fpm memory limit|128mo|| | `HYDRA_ADMIN_BASE_URL` | Url d'admin Hydra ou dispatcher | http://hydra:4445 | obligatoire |
|`NGINX_APP_SERVER_LISTEN`|Port d'écoute de l'application|8080|| | `BASE_URL` | Url d'accès | http://localhost:8080 | obligatoire |
|`HYDRA_ADMIN_BASE_URL`|Url d'admin Hydra ou dispatcher|http://hydra:4445|obligatoire| | `DSN_REMOTE_DATABASE` | DSN de la BDD | postgresql://lasql:lasql@postgres:5432/lasql?serverVersion=15&chartset=utf8 | |
|`BASE_URL`|Url d'accès|http://localhost:8080|obligatoire| | `DB_USER` | User de connection à la BDD | lasql | obligatoire |
|`DSN_REMOTE_DATABASE`|DSN de la BDD|postgresql://lasql:lasql@postgres:5432/lasql?serverVersion=15&chartset=utf8|| | `DB_PASSWORD` | PAssword de l'utilisateur de la BDD | lasql | obligatoire |
|`DB_USER`|User de connection à la BDD|lasql|obligatoire| | `APP_LOCALES` | Langues disponibles dans l'application | fr,en | obligatoire |
|`DB_PASSWORD`|PAssword de l'utilisateur de la BDD|lasql|obligatoire| | `HASH_ALGO_LEGACY` | ALgorythme de Hashage par défaut | sha256 | |
|`APP_LOCALES`|Langues disponibles dans l'application|fr,en|obligatoire| | `SECURITY_PATTERN` | Séquence à employer pour le hashage du mot de passe | password,salt,pepper | obligatoire |
|`HASH_ALGO_LEGACY`|ALgorythme de Hashage par défaut|sha256|| | `PEPPER` | Pepper utilisé pour le Hashage | | |
|`SECURITY_PATTERN`|Séquence à employer pour le hashage du mot de passe|password,salt,pepper|obligatoire| | `REDIS_DSN` | DSN du serveur Redis | redis://redis:6379 | obligatoire |
|`PEPPER`|Pepper utilisé pour le Hashage||| | `URL_LINK` | Url pouvant être utilisée dans les liens des templates | | |
|`REDIS_DSN`|DSN du serveur Redis|redis://redis:6379?&redis_sentinel=mymaster|obligatoire| | `CADDY_HTTP_PORT` | Port d'écoute de l'application | 8080 | |
| `CADDY_HTTPS_PORT` | Port d'écoute de l'application | 8443 | |
| `CADDY_DATA_FS` | Chemin vers le répertoire utilisé pour le stockage de caddy | /tmp/caddy | |
| `CADDY_APP_ROOT_PUBLIC` | Chemin vers le répertoire utilisé pour servire les fichiers | /app/public | |
| `CADDY_PHP_INDEX` | Nom du fichier a utiliser pour servir l'application | index.php | |
| `CADDY_APP_UPSTREAM_BACKEND_SERVER` | Adresse du serveur backend FastCGI PHP vers lequel doit être diriger les requêtes PHP. | unix//tmp/php-fpm.sock | |
| `CADDY_TRUSTED_PROXIES` | Spécification des adresses IP /plage IP étant sur pour transmettre les requetes HTTP | private_ranges | |
| `CADDY_LOG_FORMAT` | Spécification du format des logs | console | |
| `CADDY_LOG_LEVEL` | Spécification du niveau de verbosité des logs | INFO | |
| `PHP_FPM_MEMORY_LIMIT` | Spécification de la mémoire limite maximale alloué au processus PHP-FPM | 128M | |
| `PHP_FPM_DISPLAY_ERRORS` | Afficahge des erreurs dans la sortie du serveur web. | off | |
| `PHP_FPM_LISTEN` | Spécification du serveur sur lequel PHP FPM écoute les connexion. | /tmp/php-fpm.sock | |
| `PHP_FPM_LOG_LEVEL` | Spécification du niveau de verbosité des logs PHP-FPM | notice | |
| `PHP_FPM_PM` | Définition du mode de gestion des processus PHP-FPM | dynamic | |
| `PHP_FPM_PM_MAX_CHILDREN` | Définition du nombre maximum de processus enfants que PHP-FPM peut générer | 5 | |
| `PHP_FPM_PM_START_SERVERS` | Définition du nombre de processus enfants que PHP-FPM va démarrer au lancement de PHP-FPM | 2 | |
| `PHP_FPM_PM_MIN_SPARE_SERVERS` | Définition du nombre minimum de processus enfants inactifs que PHP-FPM doit conserver en réserve. | 1 | |
| `PHP_FPM_PM_MAX_SPARE_SERVERS` | Définition du nombre maximum de processus enfants inactifs que PHP-FPM peut conserver en réserve. | 3 | |
| `XDG_DATA_HOME` | Définition du répertoire de base pour le stockage des données spécifiques à l'utilisateur. | /tmp/data | |
### Algorithmes de hashage compatibles ### Algorithmes de hashage compatibles
La login app est compatible par défaut avec toutes les méthodes de hashage de PHP et avec SSHA. Aucune configuration supplémentaire n'est nécessaire. La login app est compatible par défaut avec toutes les méthodes de hashage de PHP et avec SSHA. Aucune configuration supplémentaire n'est nécessaire.
### Pattern de hashage ### Pattern de hashage
Définir dans la variable `SECURITY_PATTERN` le pattern utilisé avec les mots clés: password | salt | pepper séparé par des virgules pour représenter la séquence à employer pour le hashage du mot de passe. Définir dans la variable `SECURITY_PATTERN` le pattern utilisé avec les mots clés: password | salt | pepper séparé par des virgules pour représenter la séquence à employer pour le hashage du mot de passe.
Exemple : `SECURITY_PATTERN="salt,password,pepper"` Exemple : `SECURITY_PATTERN="salt,password,pepper"`
### Schéma de base de donnée ### Schéma de base de donnée
Permet d'adapter les requetes SQL à la base de donnée utilisée en indiquant les noms de colonnes de celle-ci. Permet d'adapter les requetes SQL à la base de donnée utilisée en indiquant les noms de colonnes de celle-ci.
```yaml ```yaml
@ -50,6 +76,7 @@ sql_login:
## Environnement de développement ## Environnement de développement
### Tester ### Tester
Se rendre sur [http://localhost:8000/](http://localhost:8000/) et cliquer `Login` pour commencer une nouvelle connexion. Se rendre sur [http://localhost:8000/](http://localhost:8000/) et cliquer `Login` pour commencer une nouvelle connexion.
3 utilisateurs d'exemple sont disponible pour les tests: 3 utilisateurs d'exemple sont disponible pour les tests:
| Login | Mot de passe | Algorithme | | Login | Mot de passe | Algorithme |
@ -59,8 +86,10 @@ Se rendre sur [http://localhost:8000/](http://localhost:8000/) et cliquer `Login
| test3@test.com | 123456 | SSHA | | test3@test.com | 123456 | SSHA |
### Base de donnée ### Base de donnée
2 bases de données différentes sont disponible pour les tests. 2 bases de données différentes sont disponible pour les tests.
Pour choisir la base de donnée à utiliser, modifier les d'environnement relatives à la base de donnée. Pour choisir la base de donnée à utiliser, modifier les d'environnement relatives à la base de donnée.
- **URL Postgres**: `postgresql://lasql:lasql@mariadb:3306/lasql?serverVersion=15&chartset=utf8` - **URL Postgres**: `postgresql://lasql:lasql@mariadb:3306/lasql?serverVersion=15&chartset=utf8`
- **URL Mariadb**: `mysql://lasql:lasql@postgres:5432/lasql` - **URL Mariadb**: `mysql://lasql:lasql@postgres:5432/lasql`
@ -71,11 +100,11 @@ ex : `'redis:?host[redis1:26379]&host[redis2:26379]&host[redis3:26379]&redis_sen
### Liste des ports ### Liste des ports
|Nom|Description|Port(s) hôte utilisé(s)| | Nom | Description | Port(s) hôte utilisé(s) |
|---|-----------|------------------| | ----------- | -------------------------------------------------------------------------- | ----------------------- |
|`oidc-test`|Application factice permettant de tester l'authentification OpenID Connect|`8080`| | `oidc-test` | Application factice permettant de tester l'authentification OpenID Connect | `8080` |
|`hydra`|Serveur Ory/Hydra|`8081`| | `hydra` | Serveur Ory/Hydra | `8081` |
|`hydra-sql`|Login/Consent/Logout App (ce projet)|`8082`| | `hydra-sql` | Login/Consent/Logout App (ce projet) | `8082` |
|`postgres`| Base de donnée postgres support du test et pour hydra|`5432` | `postgres` | Base de donnée postgres support du test et pour hydra | `5432` |
|`mariadb`| Base de donnée mariadb support du test|`3306` | `mariadb` | Base de donnée mariadb support du test | `3306` |
|`pgadmin`| pour administrer la base de donnée |`8085` | `pgadmin` | pour administrer la base de donnée | `8085` |