6.4 KiB
Hydra-sql
Une LoginApp pour le serveur OpenID Connect 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
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 conteneurhydra-sql
ne tournera pas
Configuration
Variables d'environnement
Variable | Description | Valeur par défaut | Utilisation |
---|---|---|---|
APP_ENV |
Environnement symfony | prod | dev:prod |
APP_DEBUG |
Console de debug symofny | false | true:false |
PHP_FPM_MEMORY_LIMIT |
php-fpm memory limit | 128mo | |
CADDY_HTTP_PORT |
Port d'écoute de l'application | 8080 | |
HYDRA_ADMIN_BASE_URL |
Url d'admin Hydra ou dispatcher | http://hydra:4445 | obligatoire |
BASE_URL |
Url d'accès | http://localhost:8080 | obligatoire |
DSN_REMOTE_DATABASE |
DSN de la BDD | postgresql://lasql:lasql@postgres:5432/lasql?serverVersion=15&chartset=utf8 | |
DB_USER |
User de connection à la BDD | lasql | obligatoire |
DB_PASSWORD |
PAssword de l'utilisateur de la BDD | lasql | obligatoire |
APP_LOCALES |
Langues disponibles dans l'application | fr,en | obligatoire |
HASH_ALGO_LEGACY |
ALgorythme de Hashage par défaut | sha256 | |
SECURITY_PATTERN |
Séquence à employer pour le hashage du mot de passe | password,salt,pepper | obligatoire |
PEPPER |
Pepper utilisé pour le Hashage | ||
REDIS_DSN |
DSN du serveur Redis | redis://redis:6379 | obligatoire |
URL_LINK |
Url pouvant être utilisée dans les liens des templates |
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.
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.
Exemple : SECURITY_PATTERN="salt,password,pepper"
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.
# config/sql_login_configuration/sql_login.yaml
sql_login:
login_column_name: email
password_column_name: password
salt_column_name: ~
table_name: usager
data_to_fetch:
- email
- lastname
- firstname
Environnement de développement
Tester
Se rendre sur http://localhost:8000/ et cliquer Login
pour commencer une nouvelle connexion.
3 utilisateurs d'exemple sont disponible pour les tests:
Login | Mot de passe | Algorithme |
---|---|---|
test1@test.com | 123456 | Bcrypt |
test2@test.com | 123456 | SHA256 |
test3@test.com | 123456 | SSHA |
Base de donnée
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.
- URL Postgres:
postgresql://lasql:lasql@mariadb:3306/lasql?serverVersion=15&chartset=utf8
- URL Mariadb:
mysql://lasql:lasql@postgres:5432/lasql
Redis
La variable REDIS_DSN
est obligatoire. Hydra-sql utilise dorénavant Redis pour le stockage du cache et des session. Compatible Redis Sentinel
ex : 'redis:?host[redis1:26379]&host[redis2:26379]&host[redis3:26379]&redis_sentinel=mymaster'
Liste des ports
Nom | Description | Port(s) hôte utilisé(s) |
---|---|---|
oidc-test |
Application factice permettant de tester l'authentification OpenID Connect | 8080 |
hydra |
Serveur Ory/Hydra | 8081 |
hydra-sql |
Login/Consent/Logout App (ce projet) | 8082 |
postgres |
Base de donnée postgres support du test et pour hydra | 5432 |
mariadb |
Base de donnée mariadb support du test | 3306 |
pgadmin |
pour administrer la base de donnée | 8085 |