85 lines
3.2 KiB
Markdown
85 lines
3.2 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
|
|
```
|
|
# Configuration symfony containers
|
|
PHP_FPM_MEMORY_LIMIT=128m
|
|
APP_ENV=dev
|
|
DATABASE_URL=postgresql://lasql:lasql@postgres:5432/lasql?serverVersion=15&chartset=utf8
|
|
|
|
DB_USER="lasql"
|
|
DB_PASSWORD="lasql"
|
|
|
|
ISSUER_URL="http://localhost:8000"
|
|
BASE_URL='http://localhost:8082'
|
|
# connexion hydra
|
|
HYDRA_ADMIN_BASE_URL='http://hydra:4445'
|
|
DSN_REMOTE_DATABASE="pgsql:host='postgres';port=5432;dbname=lasql"
|
|
APP_LOCALES="fr,en"
|
|
HASH_ALGO_LEGACY="sha256, bcrypt"
|
|
SECURITY_PATTERN="password,salt,pepper"
|
|
REDIS_DSN="redis://redis:6379
|
|
PEPPER=
|
|
```
|
|
### 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`
|