1

Comment une application, exécutée sur un serveur de production, peut-elle accéder au nom d'utilisateur de connexion de la machine à laquelle un utilisateur accède à une application? Par exemple, je suis actuellement connecté ma machine sur le INTRA intranet de l'entreprise. Mon nom d'utilisateur sera INTRA \ Nom d'utilisateur.Récupération du nom d'utilisateur Windows depuis une machine connectée via une application intranet

J'ai ajouté les noms d'utilisateur spécifiques à une base de données et que vous souhaitez vérifier le nom d'utilisateur intranet contre la base de données pour restreindre l'accès à une application et d'exploiter le nom d'utilisateur dans l'application.

Actuellement, je suis en utilisant le code suivant pour accéder au nom d'utilisateur:

Private username As String = Thread.CurrentPrincipal.Identity.Name 

Cela fonctionne très bien sur localhost, mais lors de l'authentification contre la base de données sur un serveur de développement, je reçois ce qui suit erreur:

Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'.

Est-ce une approche incorrecte? Est-ce possible ou est-ce trop un problème de sécurité? Cette application sera une application intranet interne exécutée dans un magasin IE. pièces pertinentes de web.config qui existent déjà comprennent:

<identity impersonate="true"/> 
    <authentication mode="Windows"/> 
    <authorization> 
     <deny users="?"/> 
    </authorization> 

<connectionStrings> 
    <add name="CONNSTR" connectionString="Initial Catalog=DATANAME;Data Source=servername;Integrated Security=True;" providerName="System.Data.SqlClient"/> 
</connectionStrings> 
+0

Quelle est la chaîne de connexion db que vous utilisez? – DancesWithBamboo

+0

Ajouté à la description. Merci –

Répondre

1

Lorsque vous configurez votre application Web sur le serveur, vous devez aller dans la section Sécurité du document (le nom de celui-ci change en fonction de la version d'IIS votre le serveur est en cours d'exécution, mais c'est quelque chose comme ça), désactivez l'authentification anonyme et activez l'authentification Windows. Cela indique au serveur de demander l'authentification de connexion Windows à partir du navigateur. (Peut-être quelqu'un qui sait web.config fichiers mieux que moi [qui est presque tout le monde] peut modifier pour pointer vers le bit correspondant;. Je ne pense pas que ce soit impersonate mais si je savais, je dirais que je l'ai fait jusqu'à présent seulement ce via l'interface utilisateur.)

+0

Malheureusement, cela n'a pas changé mon erreur. Cela semble raisonnable, cependant, et m'aurait probablement donné des problèmes plus tard. Merci –

0

dans votre exemple, vous localisent le nom d'utilisateur que votre serveur Web fonctionne sous. Ce que vous recherchez est le nom d'utilisateur de l'utilisateur accédant à la page.

Essayez quelque chose comme ceci:

+0

J'ai lu cet article à travers et ne vois rien que je n'ai pas essayé de résoudre ce problème. Y a-t-il une partie spécifique à laquelle vous faites référence? –

+0

Je pensais que ça pourrait être quelque chose comme ''. Mais en lisant vos mises à jour, il semble que vous le faites déjà. Désolé je ne pourrais pas être plus d'aide :( –

0

Si le réglage de la sécurité du répertoire pour l'authentification Windows ne fonctionne pas, modifiez à l'authentification de base. Vous devrez également spécifier le nom de domaine à authentifier. C'était la seule façon de faire passer la sécurité de la couche IIS à la base de données. Malheureusement, cela entraîne l'envoi du nom d'utilisateur et du mot de passe par un texte clair. Ce n'est pas la meilleure solution, mais puisque les choses étaient sur l'intranet, cela a fonctionné pendant que nous travaillions sur la mise à jour de notre procédure de connexion.

+0

Cette solution a de la pertinence, mais est loin d'être idéale.Je cherche simplement à lire les informations de la machine connectée. Je ne souhaite pas que l'utilisateur tape un nom d'utilisateur ou un mot de passe. –

Questions connexes