Récupérer le login windows du client pour le serveur [asp / vbs] - ASP - Programmation
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" )
...
Marsh Posté le 23-04-2003 à 10:17:35
ca m'intéresse car j'avais déjà posé la question
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
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...
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
Marsh Posté le 23-04-2003 à 11:15:41
masure a écrit : <authentication mode="Windows" /> |
ca m'intéresse ton truc, mais c'est dans quel langage ?
C compatible win9x / winxp ?
Marsh Posté le 23-04-2003 à 11:19:39
Pourquoi ca marche po ca ?
Code :
|
?
Quand j'appelle cette fonction -> "log=GetUsrId()" , il me dit :
Code :
|
Cette ligne 45 correspond a la ligne de l'appel de la fonction...
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...
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
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
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 :
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 :
|
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
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)
Marsh Posté le 23-04-2003 à 12:07:50
Mais as tu deja essayé ca : user = Request.ServerVariables("LOGON_USER" ) ?!
ca prend 2s
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 :
|
C'est peut etre mon code asp qui est foireux, c tout a fait possible, mais voila, ca marche pas...
merci
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 :
|
Code :
|
Bon ce coup ci tu devrais t'en sortir ou alors ( )
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é...
Marsh Posté le 23-04-2003 à 14:04:19
PyroJB a écrit : J'ai essayé ca pour voir : |
Oui pour l'ip c'est normal ca ne necessite rien de spécial c'est accessible comme on veut...
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). |
C'est en effet ça
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.
Marsh Posté le 23-04-2003 à 18:49:18
Définition des ServerVariables de IIS :
http://www.manga-torii.com/files/servervariables.htm
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
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