83 lines
3.8 KiB
Markdown
83 lines
3.8 KiB
Markdown
# 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|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.
|
|
|
|
```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`
|