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

ASP.NET Discussion :

[C#] Comment acceder à un lecteur réseau ?


Sujet :

ASP.NET

  1. #1
    Membre régulier Avatar de dupin40
    Profil pro
    Inscrit en
    Août 2003
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 102
    Points : 100
    Points
    100
    Par défaut [C#] Comment acceder à un lecteur réseau ?
    Bonjour à tous

    Mon application .net doit écrire sur un lecteur réseau "F:\"
    Avant d'essayer d'écrire dedans je teste l'existance de ce répertoire en faisant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    string repertoire = "F:\";
    if (!Directory.Exists(repertoire))
    et ce test me retourne systématiquement false.
    Y'a un t'il un droit un spécifier sur le lecteur réseau ?
    Je modifie repertoire en indiquant un chemin physique sur le serveur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    string repertoire = "C:\";
    if (!Directory.Exists(repertoire))
    et ce test me retourne true.

    Ya t'il un moyen de tester l'existance d'un lecteur réseau et d'y écrire dessus ?
    no frag, no life

  2. #2
    Membre régulier Avatar de dupin40
    Profil pro
    Inscrit en
    Août 2003
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 102
    Points : 100
    Points
    100
    Par défaut
    Je viens d'abandoner le coup des lecteurs réseaux, je vais passer par le nommage UNC des partages. ( \\nom_machine\nom_partage)

    Voilà où j'en suis:

    serveur internet : A
    serveur de données : B
    A doit ecrire sur B

    sur B, on partage un répertoire "Document"
    sur A, on créé un répertoire virtuel sous IIS qui pointe vers le partage de B

    - ce qui marche :
    on visualise les fichiers sur B depuis l'application Web A
    - ce qui marche pas :
    on ne peut pas accéder (Directory.Exists(...)), donc pas d'écriture.

    Je ne trouve pas de documentation sur l'accès à un partage réseau par une application web .... ca doit être possible quand même !!
    Quelqu'un n'aurait pas déjà fait un truc similaire et pourrais m'apporter ses lumières sur le sujet ...
    no frag, no life

  3. #3
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    Par défaut
    Essayes de voir sur le Net ce qui se rapporte aux "delegations".
    Je ne suis pas certain, mais ce devrait être par là.

    http://www.google.fr/search?hl=fr&q=...legation&meta=

    http://msdn.microsoft.com/library/de...delegation.asp
    Dans le mm article:
    http://support.microsoft.com/default...;EN-US;q289655


    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  4. #4
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 58
    Points : 60
    Points
    60
    Par défaut
    l'utilisateur par défaut d'un application web est asp.net
    il doit avoir droit d'acceder au lecteur réseau

  5. #5
    Membre régulier Avatar de dupin40
    Profil pro
    Inscrit en
    Août 2003
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 102
    Points : 100
    Points
    100
    Par défaut
    Merci de ces docs, je m'en vais les lire et les comprendre.
    Je vous tiens au courant. Qui sait peut être que ca fera partie d'une prochaine FAQ
    no frag, no life

  6. #6
    Membre régulier Avatar de dupin40
    Profil pro
    Inscrit en
    Août 2003
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 102
    Points : 100
    Points
    100
    Par défaut
    Voici la solution a mettre en place :

    Principe :

    Une application .net est par défaut exécutée avec un utilisateur n'ayant
    pas de profil réseau pour des raisons de sécurité, il ne peut pas accéder à un réseau. Le but est d'associer l'application à un utilisateur qui dispose de ces droits.

    1. Création d'un nouvel utilisateur :sur chacun des deux serveurs, on va créer un utilisateur par exemple : USR_<monapplication>_WEB en lui associant un mot de passe.
    2. Partage du dossier sur le serveur de donnéesdans les propriétés du répertoire, onglet "partage", on enlève "tout le monde" et on ajoute "USR_<monapplication>_WEB" et on lui donne le contrôle total sur le répertoire.
    3. Crypter le login et le mot de passe de l’utilisateurPour des raisons de sécurité, il est préférable de crypter le nom de l’utilisateur et son mot de passe dans la base de registre du serveur local.
      Pour cela, on va utiliser l’utilitaire windows Aspnet_setreg.exe
      aspnet_setreg.exe -k:SOFTWARE\<monapplication>\identity -u:"USR_<monapplication>_WEB" -p:"<votre mot de passe>"
    4. Définition des droits d’accès de l’utilisateur ASPNET au login et au mot de passe cryptéPour que votre application puisse lire le login et le mot de passe qui viennent d’être cryptés dans la base de registre, il faut définir le droit en lecture de l’utilisateur ASPNET.
      Pour cela, on va utiliser l’utilitaire windows Regedt32.exe.
      on accéde à la clé : HKEY_LOCAL_MACHINE\SOFTWARE\<mon application>, dans le menu sécurité, on accède aux autorisations, ajouter nom_serveur\ASPNET (autorisations en lecture)
    5. Modification de l’utilisateur ANONYME de <monapplication> dans IISDans IIS, il faut maintenant remplacer l’utilisateur ANONYME de l'application par USR_<nomapplication>_WEB
      monapplication, propriété, securité de répertoire, authentification et controle d'accès, modifié. On remplace Accès anonyme par USR_<monapplication>_WEB
    6. Modification du fichier web.configDans la section <configuration>, on ajoute
      <location path="" allowOverride="false">
      <system.web>
      <identity impersonate="true"userName="registry:HKLM\SOFTWARE\<monapplication>\identity\ASPNET_SETREG,userName"
      password="registry:HKLM\SOFTWARE\<monapplication>\identity\ASPNET_SETREG,password"
      />
      </system.web>
      </location>
      NB : la partie de cryptage du username et du password n'est pas obligatoire, dans ce cas mettez en claire les informations dans le web.config
    7. Droit d'accès du compte USR_<monapplication>_WEB
      Répertoire Autorisations requises
      - Fichiers ASP.NET temporaires :
      ‘%Files%windir%\Microsoft.NET\Framework\{version}Temporary ASP.NET Files’
      Contrôle total
      - Répertoire temporaire :
      ‘%temp%’
      Contrôle total
      - Répertoire .NET Framework : ‘%windir%\Microsoft.NET\Framework\{version}’
      Lecture et Exécution, Affichage du contenu du dossier, Lecture
      - Répertoire de configuration .NET : ‘Framework%windir%\Microsoft.NET\Framework\{version}\CONFIG’
      Lecture et ExécutionAffichage du contenu du dossierLecture
      - Racine du site Web :
      C:\inetpub\wwwroot ou le chemin vers lequel pointe le site Web par défaut
      Lecture
      - Répertoire racine système :
      %windir%\system32
      Lecture
      - Répertoire Global Assembly Cache :
      %windir%\assembly
      Lecture
      -Répertoire de contenu :
      C:\inetpub\wwwroot\YourWebApp
      Lecture et ExécutionAffichage du contenu du dossierLecture
      Remarque : dans .NET Framework version 1.0, tous les répertoires parent jusqu'au répertoire racine du système de fichiers, doivent également posséder ces autorisations. Parmi ces répertoires parent, citons :C:\, C:\inetpub\, C:\inetpub\wwwroot\
    Source :
    http://www.microsoft.com/france/tech.../secmod92.mspx
    http://www.microsoft.com/france/tech.../secmod93.mspx
    no frag, no life

  7. #7
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    Par défaut
    Très interessant, cela figurera-t-il dans la FAQ?
    Juste une question :
    Comment faire si le serveur sur lequel tu dois copier le fichier est un serveur sur lequel tu n'as pas la main (pas le droit de créer USR_<monappli>_WEB)? On supposera tout de mm que l'internaute s'authentifie sur ton appli et qu'il a les droits suffisants pour ecrire sur le serveur.

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  8. #8
    Membre régulier Avatar de dupin40
    Profil pro
    Inscrit en
    Août 2003
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 102
    Points : 100
    Points
    100
    Par défaut
    Citation Envoyé par Immobilis
    Très interessant, cela figurera-t-il dans la FAQ?
    c'est pas à moi de décider ...
    Citation Envoyé par Immobilis
    Juste une question :
    Comment faire si le serveur sur lequel tu dois copier le fichier est un serveur sur lequel tu n'as pas la main (pas le droit de créer USR_<monappli>_WEB)? On supposera tout de mm que l'internaute s'authentifie sur ton appli et qu'il a les droits suffisants pour ecrire sur le serveur.
    A+
    Je ne me suis intéressé qu'au authentification de type anonyme, mais je pense que dans le cas d'application avec authenfication window de l'utilisateur, l'accès au répertoire réseau n'est pas un problème (a condition qu'on lui ai attribué les droits)
    no frag, no life

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2006
    Messages : 124
    Points : 130
    Points
    130
    Par défaut
    j'ai des questions sur la méthode !

    tout d'abord si je veux pas crypter login/mdp, je suppose que je ne dois pas faire l'étape 3 et 4 ??!!

    et ou est ce que tu attribues les droits d'acces de l'étape 7 ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 01/08/2008, 13h29
  2. [VB.Net 2.0] Comment mappé un lecteur réseau ?
    Par troxsa dans le forum VB.NET
    Réponses: 4
    Dernier message: 22/05/2006, 14h59
  3. Comment créer un lecteur réseau w ?
    Par kikica dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 16/03/2006, 15h46
  4. comment créer un lecteur réseau, disque dur virtuel ?
    Par FFF dans le forum Autres Logiciels
    Réponses: 10
    Dernier message: 15/03/2006, 09h40

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