Ceci est une ancienne révision du document !


Authentification sur une base SQL

Certains service de Projet Bender nécessitent une authentification. Afin de la gérée, j'utilise une base SQL éditable en web.

Cette base est utilisée pour :

  • La partie sécurisée (HTTPS) du site
  • L'accès au FTP

Cela offre :

  • Une administration simple avec phpmyadmin
  • Un traitement des informations facile par requête SQL
  • Des performances correctes (pas de ralentissement)

Nous considérons que Serveur Web (Apache) et Mysql sont déjà installés.

Cette configuration est utilisée pour Projet Bender.

Description de la structure des tables

Liste des tables :

  • users : liste des utilisateurs
  • groupes_apache : liste des groupes d'utilisateur pour apache
  • pending : liste des utilisateurs en attente de validation
users
Champ Description
login login de l'utilisateur
name nom réel
email e-mail
password mot de passe chiffré
uid UID (pour le FTP)
gid GID (pour le FTP)
homedir répertoire racine (pour le FTP)
shell shell (pour le FTP)
language langage (pour le site web)
creation_date date de création
last_logged date de dernière connexion
comments commentaires
groupes_apache
Champ Description
groupe nom du groupe
login login de l'utilisateur
pending
Champ Description
login login de l'utilisateur
name nom réel de l'utilisateur
email e-mail
language langue
date date de la demande

Création de la base

Voici le script SQL permettant de générer la structure de la base :

-- phpMyAdmin SQL Dump
-- version 2.9.0.2-Debian-1
-- http://www.phpmyadmin.net
-- 
-- Serveur: localhost
-- Généré le : Mardi 31 Juillet 2007 à 23:22
-- Version du serveur: 5.0.24
-- Version de PHP: 4.4.2-1.1
-- 
-- Base de données: `users`
-- 
CREATE DATABASE `users` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;
USE `users`;

-- --------------------------------------------------------

-- 
-- Structure de la table `groupes_apache`
-- 

CREATE TABLE `groupes_apache` (
  `groupe` varchar(30) NOT NULL default '',
  `login` varchar(20) NOT NULL default '',
  PRIMARY KEY  (`groupe`,`login`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='Liste des users par groupe';

-- --------------------------------------------------------

-- 
-- Structure de la table `pending`
-- 

CREATE TABLE `pending` (
  `login` varchar(20) NOT NULL default '',
  `name` varchar(50) default NULL,
  `email` varchar(50) default NULL,
  `language` char(3) NOT NULL default 'fr',
  `date` datetime NOT NULL default '0000-00-00 00:00:00',
  PRIMARY KEY  (`login`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

-- --------------------------------------------------------

-- 
-- Structure de la table `users`
-- 

CREATE TABLE `users` (
  `login` varchar(20) NOT NULL default '',
  `name` varchar(50) default NULL,
  `email` varchar(50) default NULL,
  `password` varchar(50) default NULL,
  `uid` int(11) NOT NULL default '500',
  `gid` int(11) NOT NULL default '500',
  `homedir` varchar(50) NOT NULL default '/ftp',
  `shell` varchar(50) NOT NULL default '/bin/false',
  `language` char(3) NOT NULL default 'fr',
  `creation_date` date default NULL,
  `last_logged` date default NULL,
  `comments` varchar(255) default NULL,
  PRIMARY KEY  (`login`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Ajout des utilisateurs et groupes

Creer les utilisateurs nécessaires à l'utilisation de la base, par exemple :

  • un utilisateur apache qui peut lire la base :
CREATE USER 'apache'@ 'localhost' IDENTIFIED BY '****************';

GRANT USAGE ON * . * TO 'apache'@ 'localhost' IDENTIFIED BY '****************' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;

GRANT SELECT ON `users` . * TO 'apache'@'localhost';
  • un utilisateur ftp qui peut lire la base :
CREATE USER 'ftp'@ 'localhost' IDENTIFIED BY '****************';

GRANT USAGE ON * . * TO 'ftp'@ 'localhost' IDENTIFIED BY '****************' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;

GRANT SELECT ON `users` . * TO 'ftp'@'localhost';
  • un utilisateur admin qui peut éditer cette base :
CREATE USER 'users_admin'@ 'localhost' IDENTIFIED BY '****************';

GRANT USAGE ON * . * TO 'users_admin'@ 'localhost' IDENTIFIED BY '****************' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;

GRANT SELECT , INSERT , UPDATE , DELETE ON `users` . * TO 'users_admin'@'localhost';

Configuration des clients

Pour la confirugation des clients, voir directement :

Scripts supplémentaires

Modification des mots de passe via une page php

Backup

  • pour la base de donnée voir Mysql

Links

linux/authent_sql.1247781957.txt.gz · Dernière modification: 2009/07/17 00:05 par matthieu
Recent changes RSS feed Debian Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki