[asp / vbs] Récupérer le login windows du client pour le serveur

Récupérer le login windows du client pour le serveur [asp / vbs] - ASP - Programmation

Marsh Posté le 23-04-2003 à 10:11:41    

Est ce possible ?
La communication client serveur permet-elle de communiquer au serveur son login windows ? Exemple :
 
Sur mon serveur, g une base de donnée (je compte utiliser l'active directory de w2k srv) avec le login des utilisateurs du réseau.
 
J'aurais voulu m'organiser ainsi :
 
J'ai un fichier asp sur le serveur qui communiquerait avec la base de donnée elle aussi sur le meme serveur
 
A ce moment, "René" (qui s'est loggé en "René" + pwd à l'ouverture de sa session windows) accede à ce fichier asp distant qui doit lui afficher : "salut René" et qui crée un fichier log (on va dire users.log) SUR LE SERVEUR contenant "René s'est connecté !"
 
 
Donc je voudrais savoir si le serveur peut choper l'id du client et l'avoir sur le serveur (et non uniquement afficher l'id du client sur le poste du client)
 
Au passage, si vous avez la méthode pour chopper cet id...
Merci


Message édité par pyrojb le 23-04-2003 à 11:22:27
Reply

Marsh Posté le 23-04-2003 à 10:11:41   

Reply

Marsh Posté le 23-04-2003 à 10:16:35    

de mon coté, je teste ca en live :
 
 
<%
Dim UsrLogin
Set WshShell=CreateObject("WScript.Shell" )
UsrLogin = WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\DefaultUserName" )
 
...


Message édité par pyrojb le 23-04-2003 à 10:17:11
Reply

Marsh Posté le 23-04-2003 à 10:17:35    

[:blueflag]
ca m'intéresse car j'avais déjà posé la question


---------------
.: Clône de Drasche .:. Ebichuleys .:. Avec l'Aloe Vera je fais de beaux cacas [:dawa] .: www.oserselancer.com :.
Reply

Marsh Posté le 23-04-2003 à 10:32:25    

Si tu tournes sous IIS ca se fait vraiment facilement mais pas via la bdr, des modules NTLM permettent de placer le login windows (nt,2000,xp, 98 ptet, pas 95) dans une variable d'environnement (je sais pas comment c'est en asp) que tu peux exploiter (c'est le but).
 
Pour ma part en php, apache ya des modules qui offrent la fonctionnalité qu'on a de base avec IIS, ca s'appelle mod_ntlm (pour apache 1.3) et mod_auth_sspi (pour apache 2.x). Il faut configurer le server apache en authtype NTLM ou SSPI pour que $_server['REMOTE_USER'] soit accessible.
 
Fais une recherche avec 'asp ntlm logon(ou login) user', un truc dans le genre devrait te donner la soluce

Reply

Marsh Posté le 23-04-2003 à 10:38:50    

la, je viens de buter sur le script ci dessous ki buggait
j'ai fait un tour dans regedit, et le winlogon n'est pas présent dans l'adresse spécifiée (je dois me débrouiller pour que ca marche sous win98 et xp)
je viens de trouver un login apparement dans regedit :
HKEY_LOCAL_MACHINE\Network\Logon\username
 
il faut que je teste
 
Je ne sais pas sic vraiment mon login
Je v demander a qqun de la boite de matter sous xp...

Reply

Marsh Posté le 23-04-2003 à 10:50:11    

<authentication mode="Windows" />  
 
c'est cette authentification que tu dois utiliser pour recuperer le login d'un client connecté a ton reseau windows

Reply

Marsh Posté le 23-04-2003 à 11:15:41    

masure a écrit :

<authentication mode="Windows" />  
 
c'est cette authentification que tu dois utiliser pour recuperer le login d'un client connecté a ton reseau windows


 
ca m'intéresse ton truc, mais c'est dans quel langage ?
C compatible win9x / winxp ?

Reply

Marsh Posté le 23-04-2003 à 11:19:39    

Pourquoi ca marche po ca ?
 

Code :
  1. Function GetUsrId()
  2. Dim UsrLogin
  3. Set WshShell=CreateObject("WScript.Shell" )
  4. UsrLogin = WshShell.RegRead("HKEY_LOCAL_MACHINE\Network\Logon\username" )
  5. GetUsrId = UsrLogin
  6. End Function


 
 
?
Quand j'appelle cette fonction ->  "log=GetUsrId()" , il me dit :
 

Code :
  1. Erreur d'exécution Microsoft VBScript erreur '800a000d'
  2. Type incompatible: 'GetUsrId'
  3. /UnnamedSite1/aze.asp, ligne 45


 
Cette ligne 45 correspond a la ligne de l'appel de la fonction...

Reply

Marsh Posté le 23-04-2003 à 11:20:17    

C'est compatible tout sauf 95 (avec des doutes pour 98 quand meme).
 
Comme je te disais, microsoft a un systeme d'authentification et celui est quetionnable. Moi je l'interroge via un module d'apache comme j'ai expliqué. Toi tu ne devrais avoir aucun mal a obtenir le login vu que tu bosses en ASP mais tu n'as donné aucune précision sur le type d'appli, si tu tournais avec un server web, ou juste une appli cliente d'une BD...

Reply

Marsh Posté le 23-04-2003 à 11:27:05    

Euh, je débute... j'ai installé pws ce matin, c'est a peu pres tout ce que je peux te dire...
 
Donc pour l'instant, j'ai mon serveur sur c:
ensuite, il sera sur le serveur w2k et les clients win98-xp accederont a cette page asp sur le serveur w2k
Enfin, il faut que je me débrouille pour que ma page asp sur le serveur communique avec la base ldap de l'Active Dir en lui refilant l'id du client win98-xp et en créant un fichier sur le serveur

Reply

Marsh Posté le 23-04-2003 à 11:27:05   

Reply

Marsh Posté le 23-04-2003 à 11:32:24    

Voici mon code brut inséré dans un body :
Avec la ligne ou ca bug
 
<SCRIPT LANGUAGE="VBscript">
  Function GetUsrId()  
  Dim UsrLogin
  Set WshShell=CreateObject("WScript.Shell" )
  UsrLogin = WshShell.RegRead("HKEY_LOCAL_MACHINE\Network\Logon\username" )
  GetUsrId = UsrLogin
  End Function
</SCRIPT>    
 
<%
  Dim FS,F,log
  Set FS = CreateObject("Scripting.FileSystemObject" )
  Set F = FS.CreateTextFile("c:\windows\bureau\NomFic",true,true)
 log=GetUsrId()
  F.writeLine(log)
  F.Close
%>
 
 
Erreur d'exécution Microsoft VBScript erreur '800a000d'  
Type incompatible: 'GetUsrId'  
/UnnamedSite1/aze.asp, ligne 45


Message édité par pyrojb le 23-04-2003 à 11:34:06
Reply

Marsh Posté le 23-04-2003 à 11:50:32    

deja soit sur que ton server PWS aie l'autentification windows activee, pour iis (je connais pas) c'est comme ça :
 
http://www.footy.com.au/fts/images/faq_web_authmeth.gif
 
Debrouille toi avec pws (que je ne connais pas non plus) pour bénéficier de l'authenfication.
 
ensuite ca devrait ressembler a ca :  
 

Code :
  1. user = Request.ServerVariables("LOGON_USER" )

Reply

Marsh Posté le 23-04-2003 à 11:52:00    

lache l'affaire avec la base de reg, quand il y a des outils destinés a faire quelque chose il vaut mieux faire avec. De plus c'est dans le domaine de la securité donc on rigole pas :)

Reply

Marsh Posté le 23-04-2003 à 11:59:39    

rien de tout ca dans pws...
 
c pas trop grave si c galère, c pour mon stage, donc plus yen a a expliquer, mieux c'est...
 
Ensuite, si ca marche, il faut que je trouve la méthode (ca doit etre rapide) qui retourne la version de windows du client car les adresses dans regedit sont différentes selon l'os (xp ou win98)

Reply

Marsh Posté le 23-04-2003 à 12:07:50    

Mais as tu deja essayé ca : user = Request.ServerVariables("LOGON_USER" ) ?!
 
ca prend 2s

Reply

Marsh Posté le 23-04-2003 à 13:44:45    

J'ai essayé ca :
 
<%
Dim FS,F,log
 
Set FS = CreateObject("Scripting.FileSystemObject" )
Set F = FS.CreateTextFile("c:\windows\bureau\NomFic",true,true)
log = Request.ServerVariables("LOGON_USER" )  
F.writeLine(Request.ServerVariables("LOGON_USER" ))
F.Close
%>
<%=log%>
 
au final, il n'affihce rien quand je luis dis <%=log%>
De plus, mon fichier créé se rempli par :  

Code :
  1. "ÿþ
  2. "


 
C'est peut etre mon code asp qui est foireux, c tout a fait possible, mais voila, ca marche pas...
 
merci

Reply

Marsh Posté le 23-04-2003 à 14:02:44    

Regarde j'ai trouvé une doc qui confirme mes suppositions sur l'authentification que ce soit IIS ou PWS (c'etait sur que ca marche pour pws aussi) donc bosse la dessus :
 

Code :
  1. Getting the NT Logon from the browser
  2. faq333-144
  3. Step 1: Set up the proper authentication on the Webserver.   Don't try to do this with Anonymous Access. 
  4. With either IIS or PWS, Right click on the folder or website, choose properties, choose directory security, choose edit, choose Windows NT Challenge Response (for IE) and Basic Authentication (for Netscape).  NOTE: there are security issues with using Basic Authentication.  Please consult the IIS documentation for more information.
  5. Step 2: Use this function.
  6. Function NTUserName()
  7.     'declare variables
  8.     Dim logon, myArray
  9.     'will return Domain\Username or just Username depending
  10.     'if the user is logged into the domain or their local machine.
  11.     'also browser dependent.  go figure.
  12.     logon = Request.ServerVariables("LOGON_USER" )
  13.     'so we split the logon variable by the "\"
  14.     myArray = Split(logon, "\", -1, 1)
  15.     'take the upper bound of the logon variable
  16.     logon = myArray(Ubound(myarray))
  17.     'and you're left with just the NT Username
  18.     NTUserName = logon
  19. End Function
  20. If you get an Array out of bounds error, check the authentication on the webserver... I bet you don't have the authentication set up properly.
  21. Happy programming


 

Code :
  1. 1) selectionne la bonne authentification dans la config de ton serveur.
  2. Ca ne sert a rien d'essayer ça en acces anonyme
  3. Que ce soit avec IIS ou PWS, clic droit sur le dossier ou site web, propriétés, securité du repertoire, modifier, WinNT challenge response pour IE(NdT :je crois que c'est NTLM) and basic auth pour netscape (on s'en fiche). Il y a des consequences sur la securité quand on choisit basic auth. blabla doc IIS
  4. 2) la fonction rien a dire
  5. Si tu as un out of bound (depassement de capacité ?), vérifie l'authentification sur le serveur web (on y revient). Je parie que l'authentification n'est pas configurée correctement.


 
 
Bon ce coup ci tu devrais t'en sortir ou alors  :fou:  (:p )

Reply

Marsh Posté le 23-04-2003 à 14:03:24    

J'ai essayé ca pour voir :
 
<% =Request.ServerVariables("REMOTE_ADDR" ) %>
<% =Request.ServerVariables("LOGON_USER" ) %>
 
La premiere marche et me sort mon ip
La deuxieme ne fait rien apparemment, pas de texte affiché...
 
 :bounce:

Reply

Marsh Posté le 23-04-2003 à 14:04:19    

PyroJB a écrit :

J'ai essayé ca pour voir :
 
<% =Request.ServerVariables("REMOTE_ADDR" ) %>
<% =Request.ServerVariables("LOGON_USER" ) %>
 
La premiere marche et me sort mon ip
La deuxieme ne fait rien apparemment, pas de texte affiché...
 
 :bounce:  


 
Oui pour l'ip c'est normal ca ne necessite rien de spécial c'est accessible comme on veut...

Reply

Marsh Posté le 23-04-2003 à 14:11:13    

help !  :cry:  
 
thx :)
 
 :bounce:

Reply

Marsh Posté le 23-04-2003 à 14:16:12    

PyroJB a écrit :

help !  :cry:  
 
thx :)
 
 :bounce:  


 
 :??: comprend pas

Reply

Marsh Posté le 23-04-2003 à 18:46:21    

masure a écrit :

Si tu tournes sous IIS ca se fait vraiment facilement mais pas via la bdr, des modules NTLM permettent de placer le login windows (nt,2000,xp, 98 ptet, pas 95) dans une variable d'environnement (je sais pas comment c'est en asp) que tu peux exploiter (c'est le but).
 
Pour ma part en php, apache ya des modules qui offrent la fonctionnalité qu'on a de base avec IIS, ca s'appelle mod_ntlm (pour apache 1.3) et mod_auth_sspi (pour apache 2.x). Il faut configurer le server apache en authtype NTLM ou SSPI pour que $_server['REMOTE_USER'] soit accessible.
 
Fais une recherche avec 'asp ntlm logon(ou login) user', un truc dans le genre devrait te donner la soluce
 


C'est en effet ça :jap:
 
La syntaxe exacte en ASP :
 
Request.ServerVariables("LOGON_USER" )
 
Cela fonctionne très bien A CONDITION de désactiver les connections anonymes dans IIS. Et donner les droits d'accès aux fichiers du serveur aux différents utilisateurs (au niveau de la NTFS, comme si tu partageais le répertoire).
 
A ce moment, les utilisateurs authentifiés sur le domaine irons sur le site sans avoir à taper de mot de pass, la transition d'un serveur à l'autre se faisant implicitement en domaine NT. Par contre, les utilisateurs non connectés au domaine (en workgroup sous Windows 9x par exemple) devront saisir leur login/pass du domaine pour accéder au site.


Message édité par MagicBuzz le 23-04-2003 à 18:47:32
Reply

Marsh Posté le 23-04-2003 à 18:49:18    

Définition des ServerVariables de IIS :
 
http://www.manga-torii.com/files/servervariables.htm

Reply

Marsh Posté le 02-06-2005 à 16:13:03    

pour masure :
j'essai de faire marcher l'authentification NTLM avec le module mod auth sspi
mais ca ne marche pas pourrais tu m'expliquer un peu comment tu as fait ??
 
dezafit@yahoo.fr

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed