IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

API, COM et SDKs Delphi Discussion :

[Sécurité] Autorisation dynamique d'accès à un dossier


Sujet :

API, COM et SDKs Delphi

  1. #1
    Membre régulier Avatar de SkYsO
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 217
    Points : 122
    Points
    122
    Par défaut [Sécurité] Autorisation dynamique d'accès à un dossier
    Bonjour à tous,

    Je travail actuellement sur une application de gestion electronique de documents et je me heurte à un problème de sécurité.

    Je vous explique mon fonctionnement :

    A la base de mon application on trouve un dossier appelé DOCUMENTS qui contient tous les documents qui sont capitalisés et disponibles à travers le programme.
    Jusque la tout va bien. Aucun problème au niveau des traitements qui se résument à faire de l'écriture, lecture dans ce dossier.

    Mais voilà, ce dossier doit être mis sur le serveur et malheureusement pour que l'on puisse toujours y accéder depuis n'importe quel poste on doit le mettre en accès libre total donc nimporte qui peut venir y faire n'importe quoi en se baladant sur le serveur.

    Mon idée était de créer un utilisateur spécial et unique qui servirait de "passerelle" entre le vrai utilisateur et le dossier et ses fichiers.
    Comment est il possible d'accéder à ce dossier en se faisant passer pour le fameux utilisateur unique ?
    car tout autre personne sera refusée.


    autre solution :

    J'avais pensé aussi utilisé le composant NTFileSecurity pour ajouter et supprimer l'utilisateur en cours mais je n'arrive pas à affecter les sous dossier et fichier du dossier DOCUMENTS.

    Merci pour votre aide
    Blog de mon jeu L2D : http://xna-discovery.blogspot.com/
    Un Left 4 Dead Like en 2D vue de dessus ;p

  2. #2
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 665
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 665
    Points : 6 984
    Points
    6 984
    Par défaut Re: Sécurité, autorisation dynamique d'accès à un dossier
    Citation Envoyé par SkYsO
    J'avais pensé aussi utilisé le composant NTFileSecurity pour ajouter et supprimer l'utilisateur en cours mais je n'arrive pas à affecter les sous dossier et fichier du dossier DOCUMENTS.
    Tu fais comment pour les sous-dossiers ?
    Tu les balaies récurcivement ?

    :
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  3. #3
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 665
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 665
    Points : 6 984
    Points
    6 984
    Par défaut
    Je t'ai envoyé un MP, mais la page à plantée.
    Tu l'as reçu ?
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  4. #4
    Membre actif
    Avatar de Eric.H
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 220
    Points : 286
    Points
    286
    Par défaut
    S'il s'agit du pourvoir créer un document depuis n'importe quel poste et ensuite d'interdire toute suppression/modification. Cela doit pourvoir se regler facilement en mettant les bon droit en sécurité NTFS directement sur le dossier, depuis le serveur (si c'est du window)

  5. #5
    Membre régulier Avatar de SkYsO
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 217
    Points : 122
    Points
    122
    Par défaut
    salut à tous


    @lung, j'ai reçu ton mp et répondu

    J'ai réussi à attribuer et supprimer des droits mais je me suis rendu compte que je ne pouvais le faire que si j'étais le propriétaire du dossier. si je me connecte avec un autre utilisateur, je ne peux pas modifier les droits du dossier et je me fais jetter.

    Une solution ?
    Je peux paramètrer facilement ça sinon ? genre un dossier que n'importe qui peut modifier niveau droit (mais qui ne contient aucun utilisateur autorisé en lecture, ecriture et autre...)

    merci
    Blog de mon jeu L2D : http://xna-discovery.blogspot.com/
    Un Left 4 Dead Like en 2D vue de dessus ;p

  6. #6
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 665
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 665
    Points : 6 984
    Points
    6 984
    Par défaut
    Citation Envoyé par SkYsO
    Je peux paramètrer facilement ça sinon ? genre un dossier que n'importe qui peut modifier niveau droit (mais qui ne contient aucun utilisateur autorisé en lecture, ecriture et autre...)

    merci
    Je pense comme Eric.H que c'est plus au niveau paramétrage de windows, qu'avec le NTFileSecurity que tu peux y arriver ...
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  7. #7
    Membre régulier Avatar de SkYsO
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 217
    Points : 122
    Points
    122
    Par défaut
    Le truc c'est que je veux que les utilisateurs ne puisse accéder au dossier que par le biais de mon programme.
    Tout autre façon doit être interdite c'est pourquoi on supprime aussi le droit en lecture.

    Il me faut donc bien, quand le logiciel va sur le dossier, ajouter un droit de lecture au dossier pour l'utilisateur en cours. Et le supprimer quand il quitte le logiciel.

    Mais je ne peux changer les droits si l'utilisateur n'est pas propriétaire du dossier
    Blog de mon jeu L2D : http://xna-discovery.blogspot.com/
    Un Left 4 Dead Like en 2D vue de dessus ;p

  8. #8
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 665
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 665
    Points : 6 984
    Points
    6 984
    Par défaut
    Et en découpant ton programme en 2 :
    - Une partie sur le serveur qui a accès au répertoire.
    - Une partie pour les utilisateurs, qui passe par l'application serveur pour manipuler les données.

    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  9. #9
    Membre régulier Avatar de SkYsO
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 217
    Points : 122
    Points
    122
    Par défaut
    hum c'est à voir mais je doute que mon patron accepte l'idée de scinder en deux le logiciel.

    Cela va compliquer la chose, passer par des sockets et traiter des paquets voir gérer des threads aussi.

    J'espère que c'est pas l'ultime solution

    merci de ta suggestion
    Blog de mon jeu L2D : http://xna-discovery.blogspot.com/
    Un Left 4 Dead Like en 2D vue de dessus ;p

  10. #10
    Membre régulier Avatar de SkYsO
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 217
    Points : 122
    Points
    122
    Par défaut
    bon je remets la question sur le tapis :

    Puis je accéder à un dossier qui n'autorise la lecture ecriture qu'a mon application ?

    En gros, un dossier interdit à tous sauf à mon application.

    Ou dois je penser à du cryptage de fichier ? que je décrypte ensuite quand mon appli doit y accéder
    Blog de mon jeu L2D : http://xna-discovery.blogspot.com/
    Un Left 4 Dead Like en 2D vue de dessus ;p

  11. #11
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 665
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 665
    Points : 6 984
    Points
    6 984
    Par défaut
    Citation Envoyé par SkYsO
    Puis je accéder à un dossier qui n'autorise la lecture ecriture qu'a mon application ?

    En gros, un dossier interdit à tous sauf à mon application.
    Je me trompe peut-être, mais les droits d'accès conserne l'utilisateur de la session, pas l'application.

    Citation Envoyé par SkYsO
    Ou dois je penser à du cryptage de fichier ? que je décrypte ensuite quand mon appli doit y accéder
    Bonne idée.

    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 298
    Points : 318
    Points
    318
    Par défaut
    Citation Envoyé par SkYsO
    bon je remets la question sur le tapis :

    Puis je accéder à un dossier qui n'autorise la lecture ecriture qu'a mon application ?

    En gros, un dossier interdit à tous sauf à mon application.

    Ou dois je penser à du cryptage de fichier ? que je décrypte ensuite quand mon appli doit y accéder
    Tu crée un utilisateur particulier qui a des droits spécifiques sur ce dossier partagé et dans ton application tu crée un disque réseau pour ce partage en utilisant le login/mot de passe de cet utilisateur.

  13. #13
    Membre régulier Avatar de SkYsO
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 217
    Points : 122
    Points
    122
    Par défaut
    Citation Envoyé par cpdump
    Tu crée un utilisateur particulier qui a des droits spécifiques sur ce dossier partagé et dans ton application tu crée un disque réseau pour ce partage en utilisant le login/mot de passe de cet utilisateur.
    Hum bonne idée tiens. Il faut que je voye comment créer un disque réseau dans mon appli maintenant. Cela se fait il avec un composant particulier ?

    merci de vos réponses en tout cas

    on avance on avance
    Blog de mon jeu L2D : http://xna-discovery.blogspot.com/
    Un Left 4 Dead Like en 2D vue de dessus ;p

  14. #14
    Membre émérite
    Avatar de NoisetteProd
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    1 905
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 905
    Points : 2 614
    Points
    2 614
    Par défaut
    Salut !

    Autre solution : Utilisation d'un compte de service.

    Principe de base : Un gros dossier sur ton serveur qui contient tous les documents. Ce dossier n'est acessible qu'aux admin et à un compte de service du domaine, genre "CSERV_GED"

    Ensuite, sur ce même serveur, tu créé soit à la volée, soit en dur avant des dossiers partagés au nom de l'utilisateur. Genre "TOTO$" où TOTO a le droit en lecture, grace au $ les admin ont un contrôle total (tu mets le compte de service "CSERV_GED" admin de ton serveur, comme ca, c'est bon aussi pour lui)

    Bon, tout ça, c'est une première chose. Je ne sais pas comment tu as prévu que les utilisateurs accedent à ton soft ?? Il y a un soft par poste de travail ? Ils y accèdent par une page HTML ?

    Moin idée serais la suivante : Tu cré un service que tu installeras sur ton serveur, les utilsateurs accèdent à cet service par une interface HTML, ils demande le document, le service qui utilise le compte de service, copie le document dans le dossier de l'utilisateur, et un lien est proposé à l'utilisateur pour qu'il puisse le lire.

    Je ne sait pas si ca correspond à ton projet. Mais ca peut être une bonne solution. (Il ne resterait que le problème de la purge des répertoires utilisateurs....)

    Voila !
    A+
    Fais cogiter ta Noisette !!

    Participez à la page SOURCES Delphi !

    Découvrez le Défi Delphi

    Mon Mail

  15. #15
    Membre émérite
    Avatar de NoisetteProd
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    1 905
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 905
    Points : 2 614
    Points
    2 614
    Par défaut
    Citation Envoyé par SkYsO
    Citation Envoyé par cpdump
    Tu crée un utilisateur particulier qui a des droits spécifiques sur ce dossier partagé et dans ton application tu crée un disque réseau pour ce partage en utilisant le login/mot de passe de cet utilisateur.
    Hum bonne idée tiens.
    Et comment tu fais pour ne lui authorisé l'accès qu'au document auquel il a le droit et qu'il a demandé ??
    Fais cogiter ta Noisette !!

    Participez à la page SOURCES Delphi !

    Découvrez le Défi Delphi

    Mon Mail

  16. #16
    Membre régulier Avatar de SkYsO
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 217
    Points : 122
    Points
    122
    Par défaut
    C'est aussi une bonne idée NoissetteProd mais cela oblige encore de créer un service sup en plus du programme.

    Je vais mettre ton idée de coté car elle est interessante aussi.
    Si jamais je n'y arrive pas avec la soluce de cpdump, je me pencherais sur la tienne.

    ps : mes utilisateurs accèdent à un dossier par le biais d'une Tliste ou d'un composant dialogue (OpenDialogue).
    C'est juste pour pointer le fichier et après je met son chemin en lien dans un TEdit.
    Blog de mon jeu L2D : http://xna-discovery.blogspot.com/
    Un Left 4 Dead Like en 2D vue de dessus ;p

  17. #17
    Membre émérite
    Avatar de NoisetteProd
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    1 905
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 905
    Points : 2 614
    Points
    2 614
    Par défaut
    Et la solution Web ne te plait pas ??
    Fais cogiter ta Noisette !!

    Participez à la page SOURCES Delphi !

    Découvrez le Défi Delphi

    Mon Mail

  18. #18
    Membre régulier Avatar de SkYsO
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 217
    Points : 122
    Points
    122
    Par défaut
    si je le trouve pas mal mais elle ne peut être mise en place à cause des spécificités du programme. Cela impliquerait trop de modifications au niveau interface et on ne peut pas se le permettre.

    Je vais creuser du coté du disque reseau pour le moment


    mais je me garde les autre soluces sous le coude

    ps : il y a un composant pour ça ? créer un disque reseau ou dans le genre ?
    Blog de mon jeu L2D : http://xna-discovery.blogspot.com/
    Un Left 4 Dead Like en 2D vue de dessus ;p

  19. #19
    Membre émérite
    Avatar de NoisetteProd
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    1 905
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 905
    Points : 2 614
    Points
    2 614
    Par défaut
    Pour mappé un repertoire à l'arrache :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    USES ..., ShellApi, ...;
     
     
    ShellExecute(Application.Handle,'OPEN', PChar(GetEnvironmentVariable('ComSpec')), PChar(' /C NET USE O: \\Machine\repertoire mdp /USER:Domaine\user'), nil, SW_HIDE)
    O: est la lettre que tu mappe (tu peux mettre celle que tu veux !)
    Machine est le nom du poste ou serveur ou est partagé le dossier
    Repertoire est le nom de partage du dossier
    mdp est le mot de passe du login utilisé
    Domaine est le nom du domaine de ton entreprise
    user est le login de ton utilisateur ayant les droits sur ton dossier.

    Sinon, il esxiste une méthode plus propre avec WMI... mais c'est plus lourd à mettre en place sous delphi !
    Fais cogiter ta Noisette !!

    Participez à la page SOURCES Delphi !

    Découvrez le Défi Delphi

    Mon Mail

  20. #20
    Membre régulier Avatar de SkYsO
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 217
    Points : 122
    Points
    122
    Par défaut
    Citation Envoyé par NoisetteProd
    Pour mappé un repertoire à l'arrache :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    USES ..., ShellApi, ...;
     
     
    ShellExecute(Application.Handle,'OPEN', PChar(GetEnvironmentVariable('ComSpec')), PChar(' /C NET USE O: \\Machine\repertoire mdp /USER:Domaine\user'), nil, SW_HIDE)
    O: est la lettre que tu mappe (tu peux mettre celle que tu veux !)
    Machine est le nom du poste ou serveur ou est partagé le dossier
    Repertoire est le nom de partage du dossier
    mdp est le mot de passe du login utilisé
    Domaine est le nom du domaine de ton entreprise
    user est le login de ton utilisateur ayant les droits sur ton dossier.

    Sinon, il esxiste une méthode plus propre avec WMI... mais c'est plus lourd à mettre en place sous delphi !
    merci merci

    je vais donc voir tous ça

    merci encore pour vos réponses.

    tag résolu une fois que ça marchera
    Blog de mon jeu L2D : http://xna-discovery.blogspot.com/
    Un Left 4 Dead Like en 2D vue de dessus ;p

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [VPN] Autoriser accès à un dossier précis
    Par doons dans le forum Administration
    Réponses: 4
    Dernier message: 14/01/2015, 16h55
  2. Autorisations d'accès à des dossiers partagés
    Par jncoffy dans le forum Windows XP
    Réponses: 4
    Dernier message: 25/11/2009, 13h25
  3. Réponses: 2
    Dernier message: 23/04/2008, 15h15
  4. [Sécurité] Autoriser l'acces à un site internet
    Par justdams dans le forum Langage
    Réponses: 5
    Dernier message: 27/02/2006, 12h52
  5. [HTAccess] bloquer l'accès à un dossier : sécurité ?
    Par Rémiz dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 26/11/2005, 10h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo