Rudy Masson
4b360cc2a0
Cadoles/hydra-sql/pipeline/pr-develop Build started...
Details
Cadoles/hydra-sql/pipeline/head This commit looks good
Details
|
||
---|---|---|
.cache/composer | ||
.config/composer | ||
.local/share/composer | ||
.npm | ||
.vscode | ||
assets | ||
bin | ||
config | ||
containers | ||
public | ||
src | ||
templates | ||
tools/php-cs-fixer | ||
translations | ||
.env | ||
.gitignore | ||
Jenkinsfile | ||
Makefile | ||
composer.json | ||
composer.lock | ||
composer.phar | ||
docker-compose.yml | ||
package-lock.json | ||
package.json | ||
readme.md | ||
supervisord.pid | ||
symfony.lock | ||
webpack.config.js | ||
yarn.lock |
readme.md
Hydra-sql
Une LoginApp pour le serveur OpenID Connect 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:
# 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"
HASH_ALGO_LEGACY="sha256, bcrypt"
SECURITY_PATTERN="password,salt,pepper"
PEPPER=
Tests password
Dans le cas où plusieurs méthodes de hashage cohabitent (migration de méthode par exemple dans l'application principale), toutes les méthode seront testées pour comparer les hashs jusqu'à un succès
Pattern de hashage
Définir le pattern utilisé avec les mots clés autorisé: password | salt | pepper dans un string, séparé par des virgules pour représenter la séquence à employer pour le hashage du mot de passe.
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) pour l'exemple), le pepper peut être vide
Indiquer le nom de la colonne contenant le salt:
Il faut inscrire dans slq_login_configuration salt_column_name: salt
Indiquer le pepper utilisé:
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| $2a$12$91AHN7WFXieeadvUfZ88mO.9N7oS5adeXbdERnRno9oLAbqqDW4IG| NULL| Durand|Isabelle|
A noter que le hash de test4 est en bcrypt
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
sql_login:
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 |