# Hydra-sql 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 ## 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|| |`NGINX_APP_SERVER_LISTEN`|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?&redis_sentinel=mymaster|obligatoire| ### 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. ```yaml # 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/](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`