hydra-sql/readme.md

83 lines
3.8 KiB
Markdown
Raw Normal View History

# 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
2023-12-14 10:57:24 +01:00
|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|obligatoire|
|`URL_LINK`|Url pouvant être utilisée dans les liens des templates|||
### Algorithmes de hashage compatibles
2022-12-16 15:39:42 +01:00
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.
2022-12-16 15:39:42 +01:00
### 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
2023-12-12 08:47:41 +01:00
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.
2023-12-14 10:25:22 +01:00
- **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`
2023-12-12 08:47:41 +01:00
|`pgadmin`| pour administrer la base de donnée |`8085`