+ Répondre à la discussion
Affichage des résultats 1 à 6 sur 6
  1. #1
    Membre Expert
    Homme Profil pro
    Inscrit en
    mai 2008
    Messages
    2 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : mai 2008
    Messages : 2 134
    Points : 2 134
    Points
    2 134

    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)

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    mai 2008
    Messages
    2 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : mai 2008
    Messages : 2 134
    Points : 2 134
    Points
    2 134

    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)

  3. #3
    Expert Confirmé Sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur informatique
    Inscrit en
    février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : février 2006
    Messages : 4 878
    Points : 9 650
    Points
    9 650

    Par défaut

    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.

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    mai 2008
    Messages
    2 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : mai 2008
    Messages : 2 134
    Points : 2 134
    Points
    2 134

    Par défaut

    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)

  5. #5
    Expert Confirmé Sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur informatique
    Inscrit en
    février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : février 2006
    Messages : 4 878
    Points : 9 650
    Points
    9 650

    Par défaut

    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.

  6. #6
    Membre Expert
    Homme Profil pro
    Inscrit en
    mai 2008
    Messages
    2 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : mai 2008
    Messages : 2 134
    Points : 2 134
    Points
    2 134

    Par défaut

    bien reçu, merci pour l'info.
    Bon courage ou Bonne Chance (selon le contexte)

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •