Gestion des Utilisateurs et Authentification avec LabVIEW et Base de Données Access

L'intégration de systèmes de gestion d'utilisateurs avec des fonctionnalités d'authentification est une exigence courante dans de nombreuses applications industrielles et de contrôle, souvent développées avec LabVIEW. Pour des projets de petite et moyenne envergure, l'utilisation d'une base de données Microsoft Access s'avère être une sloution légère et efficace pour stocker les informations des utilisateurs. Cet article détaille l'approche pour mettre en œuvre un système de connexion et de gestion de comptes utilisateurs en LabVIEW, en s'appuyant sur Access.

Structure de la Base de Données Access

La première étape consiste à créer la structure de la table qui hébergera les données des utilisateurs dans un fichier Access (par exemple, utilisateurs.accdb). Une table simple, nommée ComptesUtilisateurs, suffit avec les champs suivants :

  • NomUtilisateur (TEXTE) : Identifiant unique de l'utilisateur (clé primaire).
  • MotDePasse (TEXTE) : Mot de passe de l'utilisateur.
  • NiveauAcces (NUMÉRIQUE) : Représente le niveau de privilège de l'utilisateur (ex: 1 pour utilisateur standard, 10 pour administrateur).

Voici un exemple de requête SQL pour créer cette table :

CREATE TABLE ComptesUtilisateurs (
    NomUtilisateur TEXT PRIMARY KEY,
    MotDePasse TEXT NOT NULL,
    NiveauAcces INTEGER
);

Connexion à la Base de Données depuis LabVIEW

LabVIEW, via son Toolkit de Connectivité de Base de Données (Database Connectivity Toolkit), permet d'interagir facilement avec des bases de données ODBC/OLE DB. Pour se connecter à une base Access, un "Connection String" est nécessaire. Cet exemple utilise le fournisseur OLE DB pour Access :

ChaîneDeConnexion: "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\chemin\vers\votre\base_de_donnees.accdb;"

Il est impératif d'ajutser le chemin d'accès au fichier .accdb en fonction de votre configuration.

Implémentation du Système de Connexion

Le module de connexion authentifie un utilisateur en vérifiant les identifiants fournis par rapport à la base de données. Il est crucial de ne jamais stocker ni manipuler les mots de passe en clair. Une fonction de hachage (comme MD5 ou SHA-256) doit être utilisée pour les mots de passe avant stockage et comparaison.

Voici la logique d'authentification :

PROCEDURE AuthentifierUtilisateur(NomSaisi, MotDePasseSaisi)
    // 1. Hacher le mot de passe fourni par l'utilisateur
    MotDePasseHache = HASH_MD5(MotDePasseSaisi)

    // 2. Préparer la requête SQL paramétrée
    REQUETE_SQL = "SELECT NiveauAcces FROM ComptesUtilisateurs WHERE NomUtilisateur = ? AND MotDePasse = ?"

    // 3. Exécuter la requête avec les paramètres (NomSaisi, MotDePasseHache)
    RESULTAT = ExecuterRequeteParametree(REQUETE_SQL, [NomSaisi, MotDePasseHache])

    // 4. Vérifier le résultat
    SI Longueur(RESULTAT) > 0 ALORS
        // Connexion réussie, retourner le niveau d'accès
        Retourner VRAI, RESULTAT[0].NiveauAcces
    SINON
        // Identifiants invalides
        Retourner FAUX, 0 // Indiquer échec
    FIN SI
FIN PROCEDURE

Pour le hachage des mots de passe en LabVIEW, la fonction "Cryptographic Hash" (disponible dans la palette "Data Communication" > "Protocols" > "Security") peut être utilisée.

Fonctionnalités de Gestion des Utilisateurs (CRUD)

La gestion des utilisateurs implique des opérations courantes telles que l'ajout, la suppression et la modification de comptes.

Ajouter un Nouvel Utilisateur

Pour créer un nouveau compte utilisateur, l'application doit recueillir un nom d'utilisateur, un mot de passe et un niveau d'accès. Le mot de passe doit être haché avant l'insertion dans la base de données.

PROCEDURE AjouterNouvelUtilisateur(Nom, MdpClair, Niveau)
    MotDePasseHache = HASH_MD5(MdpClair)
    REQUETE_INSERT = "INSERT INTO ComptesUtilisateurs (NomUtilisateur, MotDePasse, NiveauAcces) VALUES (?, ?, ?)"
    ExecuterRequeteParametree(REQUETE_INSERT, [Nom, MotDePasseHache, Niveau])
FIN PROCEDURE

Supprimer un Utilisateur

La suppression d'un utilisateur se fait généralement par son NomUtilisateur unique.

PROCEDURE SupprimerUtilisateur(NomCible)
    REQUETE_DELETE = "DELETE FROM ComptesUtilisateurs WHERE NomUtilisateur = ?"
    ExecuterRequeteParametree(REQUETE_DELETE, [NomCible])
FIN PROCEDURE

Modifier les Informations d'un Utilisateur

La modification peut concerner le mot de passe, le niveau d'accès, ou d'autres attributs. Comme pour l'ajout, le nouveau mot de passe doit être haché.

PROCEDURE ModifierInformationsUtilisateur(NomCible, NouveauMdpClair, NouveauNiveau)
    NouveauMdpHache = HASH_MD5(NouveauMdpClair)
    REQUETE_UPDATE = "UPDATE ComptesUtilisateurs SET MotDePasse = ?, NiveauAcces = ? WHERE NomUtilisateur = ?"
    ExecuterRequeteParametree(REQUETE_UPDATE, [NouveauMdpHache, NouveauNiveau, NomCible])
FIN PROCEDURE

Considérations de Sécurité

L'utilisation de requêtes paramétrées est essentielle pour prévenir les attaques par injection SQL. Le Toolkit de Connectivité de Base de Données de LabVIEW prend en charge cette fonctionnalité, permettant de passer les valeurs en tant que paramètres séparés de la chaîne SQL, remplaçant ainsi les points d'interrogation (?) dans la requête.

InstructionSQL = "SELECT * FROM ComptesUtilisateurs WHERE NomUtilisateur = ? AND MotDePasse = ?"
Parametres = [VariableNomUtilisateur, VariableMotDePasseHache]
// LabVIEW gérera l'insertion sécurisée des paramètres.

Pour des applications plus exigeantes en sécurité ou à plus grande échelle, il serait pertinent d'envisager des algorithmes de hachage plus robustes (comme bcrypt ou Argon2) et des bases de données plus performantes (telles que MySQL, PostgreSQL ou SQL Server).

Étiquettes: LabVIEW Access Database Authentification Gestion Utilisateur SQL

Publié le 31 mai à 20h19