none
IIS l'accès au chemin d'accès est refusé RRS feed

  • Question

  • Bonjour à tous,

    Dans un contexte d'entreprise, nous avons un serveur Windows 2012 R2 installé dans le domaine, celui-ci n'utilise pas d'utilisateur inscrit dans l'AD.

    Ce serveur contient un IIS 7.5 dans lequel j'ai développé un site intranet en .NET MVC utilisant l'authentification Windows.

    Je récupère bien l'utilisateur client, et il accède bien à mon site web. Cependant je souhaite accéder à un répertoire (en dossier partagé) sur le réseau d'entreprise avec les accès et les droit de l'utilisateur.

    Quand je souhaite afficher le document un message d'erreur s'affiche en disant que l'accès au chemin d'accès est refusé.

    J'ai vérifié les différents utilisateurs utilisé dans IIS notamment le :

    • HttpContext.User  = utilisateur du navigateur
    • Identity du pool = ApplicationPoolIdentity
    • Utilisateur du processus (w3wp.exe) = DefaultAppPool

    J'ai testé avec l'authentification de base avec mes informations d'authentification (qui sont mon login et pwd windows) et là j'arrive a accéder à mes fichiers sur le réseau.

    Ce que je ne comprends pas c'est que les informations utilisateurs que ça soit du HttpContext. User ou du Identity pool ou process il n'y a aucune différence. 

    Je tiens juste à préciser que je suis développeur .Net MVC et non un administrateur réseau ou IIS, mais j'aimerai augmenter mes connaissances et compétences dans ces domaines. 

    SVP aidez moi ça fait un mois que je suis sur ce problème.

    Je vous remercie pour l'aide que vous m'apporterai.


    • Modifié Yuujin8 dimanche 6 octobre 2019 16:45
    dimanche 6 octobre 2019 16:37

Toutes les réponses

  • Bonjour,

    Alors je suis plutôt le contraire : plus orienté administration que développement - peut être que l'on va se compléter !

    Votre soucis est un problème d'emprunt d'identité.

    En effet, votre utilisateur s'authentifie sur votre IIS : il obtient donc un jeton d'authentification.

    Ensuite, vous souhaiteriez qu'il puisse accéder, via votre IIS, à un dossier partagé sur le réseau. Et c'est là que ça coïnce, car en fait c'est IIS qui essaye d'accéder au partage réseau, et non l'utilisateur...

    Du coup, l'accès est refusé.

    En fait, il va falloir que votre site web fasse de l'emprunt d'identité pour se comporter comme l'utilisateur loggué.

    J'ai trouvé ceci qui pourrait vous aider : https://support.microsoft.com/fr-fr/help/306158/how-to-implement-impersonation-in-an-asp-net-application


    Cordialement,

    Sylvain (MCP, MCTS Windows Server 2008 R2 Server Virtualization, MCTS Exchange 2010)

    WWW : http://snsv.consulting | Blog : http://sylvaincoudeville.fr

    "Aléatoire" et "Mystérieux" sont des qualificatifs inventés par l'Homme pour éviter de dire qu'il n'a pas trouvé la root cause du problème...

    mardi 8 octobre 2019 06:12
  • Bonjour,

    Merci pour ta réponse et le lien.

    Justement j'ai vu qu'il y avait la fonctionnalité emprunt d'identité en pensant que cela allait répondre à mon problème, mais malheureusement non. Voici les tests que j'ai fait :

    test1 :

    IIS => Sites=> Default Web Sites => MonSite => Authentification

    Tout est désactivé sauf Auhtentification Windows

    Je fais un emprunt d'identité directement dans mon code pour aller chercher de fichier;

    HttpContext.Current.User.Identity.Impersonate();
    try
    {
       using (StreamReader sr = new StreamReader(networkPath))
       {
          using (MemoryStream ms = new MemoryStream())
          {
              sr.BaseStream.CopyTo(ms);
              return ms;
          }
        }
    }
    finally
    {
      HttpContext.Current.User.Identity.Undo();
    }  

    Et le résultat est :

    l'accès au chemin d'accès "\\Serveur\groupe$\répertoire\fichier.pdf" est refusé.

    Test 2 :

    IIS => Sites=> Default Web Sites => MonSite => Authentification

    Tout est désactivé sauf Auhtentification Windows et emprunt d'identité

    J'ai enlevé l'emprunt d'identité de mon code.

    Mon code pour aller chercher de fichier

    using (StreamReader sr = new StreamReader(networkPath))
       {
          using (MemoryStream ms = new MemoryStream())
          {
              sr.BaseStream.CopyTo(ms);
              return ms;
          }
        }

    Et le résultat est :

    Ma page web m'affiche une pop-up qui me demande d'ouvrir une session en renseignant le nom d'utilisateur et le mot de passe. (la même popup que l'authentification de base)

    Je ne comprends toujours pas pourquoi avec l'authentification de base tout fonctionne correctement, il y a t-il des liens qui sont font automatiquement ?

    Je tiens juste à rappeler que le compte du serveur est un compte local qui est dans le domaine mais pas dans l'AD.

    Vois-tu un peux mieux mon problème ?

    Une autre question est-ce vraiment de l'emprunt d'identité ou de la délégation car je veux accéder à des dossiers en réseau avec l'identité client ?

    Merci




    • Modifié Yuujin8 jeudi 10 octobre 2019 12:37
    jeudi 10 octobre 2019 11:33
  • Bonjour,

    Bête question, est ce vous avez ajouté votre url dans les trusted site de IE ?

    ou en firefox ou chrome ? :

    https://specopssoft.com/blog/configuring-chrome-and-firefox-for-windows-integrated-authentication/

    Olivier.


    jeudi 10 octobre 2019 13:37
  • Bonjour Olivier,

    Alors non je n'avais pas mis dans les trusted de site IE et/ou firefox, chrome.

    Je l'ai fais mais j'ai exactement les mêmes symptômes 😢😢

    Merci de ton aide ça a peut-être enlever une erreur

    jeudi 10 octobre 2019 15:01
  • Bonjour,

    Toujours bloqué par ce problème, j'ai continué mes recherches et j'ai trouvé que mon ImpersonationLevel était à none au lieu de Impersonation.

    Est-ce que cela pourrait expliquer mon interdiction d'accès ? Si oui comment le modifier ?

    Je suis convaincu que c'est soit l'AD ou le contrôleur de domaine qui défini ce paramètre.

    Si oui pouvez-vous m'expliquer ou et comment le modifier.



    mercredi 23 octobre 2019 16:51