Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1774 connectés 

  FORUM HardWare.fr
  Programmation
  ASP

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

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°369190
pyrojb
Posté le 23-04-2003 à 10:11:41  profilanswer
 

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
mood
Publicité
Posté le 23-04-2003 à 10:11:41  profilanswer
 

n°369194
pyrojb
Posté le 23-04-2003 à 10:16:35  profilanswer
 

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
n°369196
urd-sama
waste of space
Posté le 23-04-2003 à 10:17:35  profilanswer
 

[: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 :.
n°369210
Masure
Posté le 23-04-2003 à 10:32:25  profilanswer
 

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

n°369215
pyrojb
Posté le 23-04-2003 à 10:38:50  profilanswer
 

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...

n°369228
Masure
Posté le 23-04-2003 à 10:50:11  profilanswer
 

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

n°369257
pyrojb
Posté le 23-04-2003 à 11:15:41  profilanswer
 

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 ?

n°369266
pyrojb
Posté le 23-04-2003 à 11:19:39  profilanswer
 

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...

n°369267
Masure
Posté le 23-04-2003 à 11:20:17  profilanswer
 

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...

n°369282
pyrojb
Posté le 23-04-2003 à 11:27:05  profilanswer
 

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

mood
Publicité
Posté le 23-04-2003 à 11:27:05  profilanswer
 

n°369293
pyrojb
Posté le 23-04-2003 à 11:32:24  profilanswer
 

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
n°369315
Masure
Posté le 23-04-2003 à 11:50:32  profilanswer
 

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" )

n°369318
Masure
Posté le 23-04-2003 à 11:52:00  profilanswer
 

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 :)

n°369325
pyrojb
Posté le 23-04-2003 à 11:59:39  profilanswer
 

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)

n°369330
Masure
Posté le 23-04-2003 à 12:07:50  profilanswer
 

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

n°369385
pyrojb
Posté le 23-04-2003 à 13:44:45  profilanswer
 

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

n°369395
Masure
Posté le 23-04-2003 à 14:02:44  profilanswer
 

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 )

n°369396
pyrojb
Posté le 23-04-2003 à 14:03:24  profilanswer
 

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:

n°369399
Masure
Posté le 23-04-2003 à 14:04:19  profilanswer
 

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...

n°369404
pyrojb
Posté le 23-04-2003 à 14:11:13  profilanswer
 

help !  :cry:  
 
thx :)
 
 :bounce:

n°369408
Masure
Posté le 23-04-2003 à 14:16:12  profilanswer
 

PyroJB a écrit :

help !  :cry:  
 
thx :)
 
 :bounce:  


 
 :??: comprend pas

n°369790
MagicBuzz
Posté le 23-04-2003 à 18:46:21  profilanswer
 

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
n°369792
MagicBuzz
Posté le 23-04-2003 à 18:49:18  profilanswer
 

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

n°1105698
mdetaf
Posté le 02-06-2005 à 16:13:03  profilanswer
 

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

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  ASP

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

 

Sujets relatifs
upload depuis code php sur serveur sécurisé ???[js ? vbs?] récupérer l'image associée d'un programme (icone) ?
[C/C++]récupérer la source d'une page htmlRécupérer les mots de passe d'un forum phpBB !
[ MySQL ] Récuperer l'ID lors d'un insert avec ID auto-increment...[HTML/JS] Récupérer les infos systèmes du client?
[ASM] Création d'une DLL en MASM32 pour un client VB6[PHP] Appeler un fichier source situé sur un autre serveur.
Sockets windows -> impossible de créer une socket! 
Plus de sujets relatifs à : [asp / vbs] Récupérer le login windows du client pour le serveur


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR