Précédent   Forum du club des développeurs et IT Pro > Bases de données > Firebird > SQL
SQL Forum d'entraide sur le SQL pour Firebird
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 30/07/2012, 14h46   #1
Just-Soft
Membre Expert
 
Homme AbdelHakim Kellouche
Inscription : mai 2008
Messages : 2 048
Détails du profil
Informations personnelles :
Nom : Homme AbdelHakim Kellouche
Localisation : Algérie

Informations professionnelles :
Secteur : Service public

Informations forums :
Inscription : mai 2008
Messages : 2 048
Points : 2 148
Points : 2 148
Envoyer un message via MSN à Just-Soft Envoyer un message via Skype™ à Just-Soft
Par défaut Delphi 2010 et Firebird 2.5

Salut !
quelle méthode et composant adéquat pour tester si un utilisateur a le droit d'accéder ou pas à ma base de données. A priori, j'ai créé plusieurs utilisateurs avec différents rôle, maintenant dans mon application, à l'exécution, l'utilisateur doit renseigner son nom d'utilisateur et son mot de passe, puis l'application vérifie s'il peut continuer ou pas à exécuter l'application...

je me suis documenté mais je me suis vite perdu, j'ai essayé avec :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
procedure TPasswordDlg.OKBtnClick(Sender: TObject);
begin
  IF teste_utilisateur(Edit_nom.Text,Edit_MDP.Text) then
  ShowMessage('trouvé') else ShowMessage('introuvable');
end;
 
FUNCTION TPasswordDlg.teste_utilisateur(Utilisateur, MDP : String) : BOOLEAN;
var i:integer;
begin
  Result := False;
  WITH DataModule2.IBSecurityService1 do
  begin
    UserName :=Utilisateur;
    Password :=MDP;
    SQLRole :='rdb$admin';
    DisplayUsers;
    FOR i := 0 UserInfoCount-1 do
    begin
      IF (UserInfo[i].UserName = Utilisateur) then
      // je voudrais tester sur le MDP mais UserInfo ne dispose pas de cette info
      begin
        Result := True;
        BREAK;
      end;
    end;
  end;
end;
le hic et que j'ai aucun moyen, avec IBSecurityService, de tester sur le mot de passe !!

une idée, une piste ...

merci par avance
__________________
Bon courage ou Bonne Chance (selon le contexte)
Just-Soft est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2012, 10h12   #2
Just-Soft
Membre Expert
 
Homme AbdelHakim Kellouche
Inscription : mai 2008
Messages : 2 048
Détails du profil
Informations personnelles :
Nom : Homme AbdelHakim Kellouche
Localisation : Algérie

Informations professionnelles :
Secteur : Service public

Informations forums :
Inscription : mai 2008
Messages : 2 048
Points : 2 148
Points : 2 148
Envoyer un message via MSN à Just-Soft Envoyer un message via Skype™ à Just-Soft
Par défaut Sans issue !!!

je viens de tomber sur un ancien poste qui traite du même sujet et la conclusion est qu'on n'a pas les moyens d'avoir le mot de passe tellement il est bien protégé et crypté ! chose qui me parait bizarre et très loin de la logique car, comme tout le monde le sait, pour accéder à une base de données firebird on doit fournir le couple (nom, mdp) alors pourquoi si l'on veut imiter ça dans une application et loin des outils firebird on n'a pas la main ? dans ces conditions ont doit bricoler, comme p.e, créer une autre table contenant le nom d'utilisateur et le mot de passer et travailler avec !!! faisable mais moche c'est mon avis.

maintenant j'ai une autre question relative au même sujet, comment obtenir le "role" d'un utilisateur j'ai beau chercher dans la faq mais rien trouvé.

merci encore de me lire et de me guider.
__________________
Bon courage ou Bonne Chance (selon le contexte)
Just-Soft est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2012, 10h56   #3
Cl@udius
Modérateur
 
Avatar de Cl@udius
 
Homme Claude Renouleaud
Développeur informatique
Inscription : février 2006
Messages : 4 860
Détails du profil
Informations personnelles :
Nom : Homme Claude Renouleaud
Âge : 50
Localisation : France, Hautes Pyrénées (Midi Pyrénées)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2006
Messages : 4 860
Points : 9 978
Points : 9 978
Salut

Citation:
Envoyé par Just-Soft Voir le message
..., pour accéder à une base de données firebird on doit fournir le couple (nom, mdp)
Pas exactement, un utilisateur doit fournir son couple login mdp/password pour se connecter au serveur Firebird. C'est au niveau de cette connexion que le serveur autorise ou non l'accès.

Ensuite c'est par la gestion des droits (GRANT/REVOKE) que l'on restreint l'accès aux bases de données. Ces droits sont accordés au User et/ou au rôle.

Citation:
Envoyé par Just-Soft Voir le message
maintenant j'ai une autre question relative au même sujet, comment obtenir le "role" d'un utilisateur j'ai beau chercher dans la faq mais rien trouvé.
Un User peut posséder un ou plusieurs rôles.
Pour obtenir cette liste:
Code :
1
2
3
4
5
6
7
SELECT
 RDB$RELATION_NAME
FROM
  RDB$USER_PRIVILEGES
WHERE
  RDB$PRIVILEGE = 'M' AND
  RDB$USER = :MON_USER
@+ Claudius
__________________
A la question technique que par MP/MV tu formuleras, la réponse aux oubliettes finira.
Cl@udius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2012, 12h09   #4
Just-Soft
Membre Expert
 
Homme AbdelHakim Kellouche
Inscription : mai 2008
Messages : 2 048
Détails du profil
Informations personnelles :
Nom : Homme AbdelHakim Kellouche
Localisation : Algérie

Informations professionnelles :
Secteur : Service public

Informations forums :
Inscription : mai 2008
Messages : 2 048
Points : 2 148
Points : 2 148
Envoyer un message via MSN à Just-Soft Envoyer un message via Skype™ à Just-Soft
Citation:
Envoyé par Cl@udius Voir le message
Un User peut posséder un ou plusieurs rôles.
Pour obtenir cette liste:
Code :
1
2
3
4
5
6
7
SELECT
 RDB$RELATION_NAME
FROM
  RDB$USER_PRIVILEGES
WHERE
  RDB$PRIVILEGE = 'M' AND
  RDB$USER = :MON_USER
@+ Claudius
Merci mon ami pour le file que j'ai loupé malgré que j'ai bien parcouru la faq mais quelles sont les autres constantes que peut prendre RDB$PRIVILEGE et quelle est la signification de chaque constante ?

merci encore.
__________________
Bon courage ou Bonne Chance (selon le contexte)
Just-Soft est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/08/2012, 10h52   #5
Cl@udius
Modérateur
 
Avatar de Cl@udius
 
Homme Claude Renouleaud
Développeur informatique
Inscription : février 2006
Messages : 4 860
Détails du profil
Informations personnelles :
Nom : Homme Claude Renouleaud
Âge : 50
Localisation : France, Hautes Pyrénées (Midi Pyrénées)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2006
Messages : 4 860
Points : 9 978
Points : 9 978
Hello

Cette table système contient les droits accordés aux users/rôles sur les tables, vues, procédures stockées ou triggers, ainsi que l'appartenance des users aux différents rôles.

La colonne RDB$PRIVILEGES peut prendre les valeurs suivantes:
  • S: Select
  • U: Update
  • D: Delete
  • I: Insert
  • R: References
  • X: Execute
  • M: Membre (pour les rôles)

@+ Claudius
__________________
A la question technique que par MP/MV tu formuleras, la réponse aux oubliettes finira.
Cl@udius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/08/2012, 13h59   #6
Just-Soft
Membre Expert
 
Homme AbdelHakim Kellouche
Inscription : mai 2008
Messages : 2 048
Détails du profil
Informations personnelles :
Nom : Homme AbdelHakim Kellouche
Localisation : Algérie

Informations professionnelles :
Secteur : Service public

Informations forums :
Inscription : mai 2008
Messages : 2 048
Points : 2 148
Points : 2 148
Envoyer un message via MSN à Just-Soft Envoyer un message via Skype™ à Just-Soft
bien reçu, merci pour l'info.
__________________
Bon courage ou Bonne Chance (selon le contexte)
Just-Soft est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 06h52.


 
 
 
 
Partenaires

Hébergement Web