2011-05-03 4 views
0

J'ai besoin d'obtenir le nom de domaine Windows à partir d'Internet Explorer en utilisant classic asp (je pourrais l'essayer d'une autre manière si avec un ASP classique ce n'est pas possible).Obtenir le nom de domaine Windows

Je dois faire ceci afin d'insérer le nom de domaine dans une rangée de base de données.

Encore une fois, en résumé, j'ai besoin de récupérer le nom de domaine de l'ordinateur Windows à partir d'Internet Explorer qui accède à une page Web particulière.

Toute idée où je pourrais trouver et exemple pour faire cela?, Est-ce possible?

+0

utilisez-vous l'authentification Windows? Quelle version d'IIS? Le domaine du serveur Web et le domaine de l'utilisateur ont-ils une relation (même domaine, même forêt, etc.)? –

+0

Je ne sais pas vraiment quel système d'authentification ils utilisent, mais je suppose qu'ils s'authentifient sur des domaines différents et c'est pourquoi ils veulent stocker cette information. Le client souhaite insérer le nom de la fenêtre du domaine avec d'autres informations dans une table. Ils utilisent Internet Explorer 8, et je dois utiliser asp pour des raisons héritées (ils ont un serveur IIS avec le support .asp mais pas le support php par exemple). Je comprends que vous avez vu votre réponse que ce n'est pas aussi simple que d'obtenir l'information d'une sorte d'en-tête http (par exemple l'agent utilisateur). Je vais m'enquérir de ces données demain. – rfc1484

Répondre

1

Les navigateurs Web utilisent par défaut les protocoles Web (pensez Http, Html, Ssl, etc.). Par votre nom d'utilisateur, je sais que vous connaissez les RFC qui définissent ces protocoles.

Les réseaux Windows utilisent un protocole différent. Le domaine est une frontière de sécurité logique dans les réseaux Windows. Oui, dans les versions modernes de Windows Domain, la sécurité utilise des protocoles standards comme Kerberos.

Le problème que vous aurez est qu'un navigateur Web n'envoie normalement pas d'informations supplémentaires à un serveur Web sur le client. Ce serait un énorme problème de sécurité. Ainsi, par défaut, un navigateur Web (même IE) ne fournirait aucune information de sécurité réseau dans une requête Http.

Lorsque votre serveur Web requiert l'authentification du client, le navigateur Web doit fournir davantage d'informations de sécurité au serveur. En fonction du type d'authentification requis par votre serveur Web, votre navigateur envoie des informations différentes. Par exemple, dans l'authentification Http Basic, le navigateur envoie un nom d'utilisateur et un mot de passe. À ma connaissance, la meilleure façon d'obtenir des informations sur le domaine réseau Windows à partir d'un navigateur Web consiste à forcer le navigateur à s'authentifier à l'aide de l'authentification Windows. Il s'agit d'un mode d'authentification spécial que Microsoft a créé et qui transmet les informations de sécurité réseau Microsoft sur le protocole HTTP standard. Cependant, pour que cela fonctionne:

  1. Les utilisateurs doivent être en cours d'exécution IE sur le serveur Web Windows
  2. doit être IIS sous Windows
  3. Le client et le serveur doivent avoir une relation de sécurité Windows
  4. IIS doit être activé pour Windows Auth
  5. Il existe de nombreuses restrictions concernant le chemin réseau entre le client et le serveur. Les proxies et les pare-feu empêchent généralement le client IE d'utiliser l'authentification Windows avec IIS.

Si vous pouvez vivre avec cette liste de contrôle, je pense que vous trouverez les informations de domaine dans l'un des en-têtes http. Vous devrez peut-être l'analyser du nom d'utilisateur qui sera domaine \ utilisateur. Mais je suis désolé, je ne me souviens pas des détails. Cela devrait fonctionner même dans ASP classique. Plus d'informations sur l'authentification Windows est disponible à http://www.iis.net/ConfigReference/system.webServer/security/authentication/windowsAuthentication

http://msdn.microsoft.com/en-us/magazine/cc301387.aspx est d'environ ASP.NET, mais il dit:

Pour un utilisateur authentifié en utilisant l'authentification Windows , le nom est de la forme domainname \ nom d'utilisateur, où domainname est le nom du domaine dans lequel l'utilisateur est inscrit (ou nom de la machine s'il s'agit d'un compte local au lieu d'un compte de domaine), et nom d'utilisateur est le nom de l'utilisateur.

Dans ASP classique, essayez Request.ServerVariables ("AUTH_USER") ou Request.ServerVariables ("LOGON_USER")

Une alternative à l'authentification Windows est d'utiliser Basic Auth et forcer l'utilisateur à se connecter avec leur informations d'identification Windows en tant que domaine \ utilisateur. Cela présente cependant d'autres problèmes de sécurité et vous devriez le faire uniquement via SSL. Cependant, cette technique fonctionnera sur Internet et ne nécessite pas de relation de sécurité entre le PC client et le serveur. Cela fonctionnerait également pour les navigateurs non IE.

+0

Merci, je pense que j'ai plus que suffisamment d'informations maintenant pour commencer à travailler sur le problème. – rfc1484

0

Au cas où quelqu'un rencontrerait le même problème, voici la solution que j'ai implémentée (à peu près ce que Michael Levy a dit).

Vous devez activer l'authentification Windows intégrée dans IIS: http://en.wikipedia.org/wiki/Integrated_Windows_Authentication.

Vous pouvez lire ici comment le faire: http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/5f8fe119-4095-4094-bba5-7dec361c7afe.mspx?mfr=true

Après cela, vous pouvez utiliser:

Dans ASP classique Request.ServerVariables ("AUTH_USER") ou Request.ServerVariables ("LOGON_USER ")

Il semble fonctionner aussi avec d'autres navigateurs, pas seulement avec IE.

Merci encore à Michael Levy de me pointer dans la bonne direction.

+0

Les navigateurs autres que IE lancent-ils une boîte de dialogue nom d'utilisateur/mot de passe? Je suppose que Firefox prend désormais en charge l'authentification Windows - http://support.mozilla.com/fr/kb/Firefox%20asks%20for%20user%20name%20and%20password%20on%20internal%20sites et Chrome pourrait le soutenir bientôt - http://code.google.com/p/chromium/issues/detail?id=19 –

Questions connexes