111 lines
3.5 KiB
Markdown
111 lines
3.5 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
|
|
|
|
## Usage
|
|
|
|
Dans le cas d'utilsation du thème pour personaliser la page de login
|
|
|
|
### Développement
|
|
|
|
Un environnement Docker Compose est proposé comme support de développement.
|
|
|
|
Afin de démarrer celui-ci:
|
|
|
|
```bash
|
|
|
|
# Démarrer l'environnement docker-compose
|
|
make up
|
|
|
|
# fermer l'environnement
|
|
make down
|
|
|
|
```
|
|
|
|
## Variables d'environnement
|
|
```
|
|
DB_USER="lasql"
|
|
DB_PASSWORD="lasql"
|
|
|
|
ISSUER_URL="http://localhost:8000"
|
|
BASE_URL='http://localhost:8080'
|
|
# connexion hydra
|
|
HYDRA_ADMIN_BASE_URL='http://hydra:4445'
|
|
DSN_REMOTE_DATABASE="pgsql:host='postgres';port=5432;dbname=lasql"
|
|
APP_LOCALES="fr,en"
|
|
```
|
|
## Tests password
|
|
|
|
### Postgres
|
|
|
|
```
|
|
Les mot de passe inscrits en bdd sont hachés en tenant compte du salt si non vide (cf données de la bdd plus bas) et du pepper inscrit en variable d'environnement (généré avec : bin2hex(random_bytes(32))
|
|
Il faut inscrire dans slq_login_configuration salt_column_name: salt
|
|
et conserver le pepper dans service.yaml
|
|
env(PEPPER): "257d62c24cd352c21b51c26dba678c8ff05011a89022aec106185bf67c69aa8b"
|
|
|
|
```
|
|
### mariadb
|
|
```
|
|
En plus de tester la connexion à une différente base de donnée, on teste le hashage de password sans salt ni pepper
|
|
Il faut mettre dans sql_login_configuration salt_column_name: ~
|
|
et dans service.yaml
|
|
env(PEPPER): ~
|
|
|
|
```
|
|
### test connexion mariadb
|
|
```
|
|
Modifier la variable d'environnement avec cette valeur
|
|
DSN_REMOTE_DATABASE="mysql:host=mariadb;port=3306;dbname=lasql;"
|
|
|
|
```
|
|
|
|
## Données de test
|
|
|
|
### postgres
|
|
```
|
|
|email|password|salt|lastname|firstname
|
|
|test1@test.com| 8ad4025044b77ae6a5e3fcf99e53e44b15db9a4ecf468be21cbc6b9fbdae6d9f| cesaltestunexemple| Locke|John|
|
|
|test2@test.com| 50626fa21f45a275cea0efff13ff78fd02234cade322da08b7191c7e9150141d| NULL| Dubois| Angela|
|
|
|test3@test.com| 504ae1c3e2f5fdaf41f868164dabcef21e17059f5f388b452718a1ce92692c67| cesaltestunautreexemple| Dupont| Henri|
|
|
|test4@test.com| 50626fa21f45a275cea0efff13ff78fd02234cade322da08b7191c7e9150141d| NULL| Durand|Isabelle|
|
|
```
|
|
|
|
### mariadb (sans salt)
|
|
```
|
|
|email|password|lastname|firstname
|
|
|test1@test.com| 8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92| Sassot|Charles|
|
|
|test2@test.com| 8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92| Dubois| Angela|
|
|
|test3@test.com| 8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92| Dupont| Henri|
|
|
|test4@test.com| 8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92| Durand|Isabelle|
|
|
```
|
|
|
|
Mot de passe = '123456' hashé en par sha256
|
|
|
|
## configuration
|
|
Permet d'adapter les requetes SQL en indiquant les noms de colonnes nécessaires.
|
|
|
|
pdo_configuration/pdo.yaml
|
|
```
|
|
pdo:
|
|
login_column_name: email
|
|
password_column_name: password
|
|
salt_column_name: ~
|
|
table_name: usager
|
|
data_to_fetch:
|
|
- email
|
|
- lastname
|
|
- firstname
|
|
```
|
|
|
|
#### Conteneurs
|
|
|
|
|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` |