2010-07-13 19 views
3

J'ai besoin d'être capable d'identifier un système d'un autre dans ASP.Net en utilisant tout ce qui est disponible dans HttpContext. J'ai essayé d'utiliser de nombreux ServerVariables disponibles, mais souvent les systèmes sont configurés à partir d'un lecteur construit à partir d'une image. Donc, à cause du pare-feu, leur adresse IP est la même et tous leurs ServerVariables (browseragent, logonuser) sont les mêmes, j'ai besoin de trouver quelque chose d'autre qui permettra de distinguer différentes machines. Étant donné que le site est sécurisé avec l'authentification par formulaire, l'authentification intégrée de Windows doit être désactivée (sinon, j'aurais accès à différentes valeurs de Logon_User).Comment pouvez-vous "encombrer" un ordinateur spécifique derrière un pare-feu en utilisant HttpContext?

Je ne suis pas mariée à HttpContext, mais elle me semble être le seul moyen d'utiliser le code pour récupérer des informations utilisateur identifiables.

EDIT/MISE À JOUR:

Harvey a fourni un @ Robert quelques liens seach qui a un grand nombre de résultats, dont la plupart ne correspondent pas à ma facture pour une raison ou une autre (bien qu'il y ait encore quelques de bonnes idées là-dedans auxquelles je n'avais pas pensé auparavant). Principalement, je dois être capable d'identifier si quelqu'un a changé de machine derrière un pare-feu. Je vais donc fournir quelques détails sur la structure du code qui permettront de comprendre pourquoi certaines choses ne fonctionnent pas pour moi.

  1. Sessions/cookies sont persistants jusqu'à minuit (décision prise façon sur ma tête, je vis avec elle)
  2. L'utilisateur authentifié n'utilise pas une classe MembershipUser. (Même si elle a fait , MembershipUser.IsOnline aurait me offrir rien de plus qu'un précédemment utilisateur connecté)
  3. Les utilisateurs sont connus pour supprimer les cookies ou à proximité navigateurs sans se déconnecter
  4. J'ai besoin certains critères peut dire une machine d'un autre pas nécessairement pour empêcher les connexions simultanées, mais à moins pour les identifier.
+1

Il me semble que vous pourriez déposer un cookie avec un GUID sur la machine la première fois que l'utilisateur accède au site à partir de cette machine. Bien sûr, l'utilisateur peut toujours supprimer les cookies. Quelle sorte de fonctionnalité cette identification permet-elle? –

+0

Que voulez-vous dire par «empreinte»? – PhilPursglove

+0

@Robert Harvey - on peut supposer que cela empêcherait un seul utilisateur d'utiliser plusieurs machines pour se connecter au site simultanément, et cela aiderait également à identifier quand un utilisateur a changé de machine s'il reste une session active disponible. –

Répondre

0

Ceci est une réponse personnelle. J'ai rencontré Browser Spy, et bien qu'il ne traite pas les détails de la façon de procéder, il indique qu'il est possible, grâce à une combinaison de ces éléments, d'identifier de façon unique un système spécifique avec une marge d'erreur minimale.

0

Générez un guid lorsqu'ils se connectent et les stockent dans un cookie et par rapport à l'enregistrement utilisateur dans la base de données. Comparez cela à chaque demande si elle ne correspond pas à une connexion simultanée. Pour être clair, ce cookie est un cookie de session comme l'authentification par formulaire, s'il est effacé, il sera déconnecté de toute façon.

+1

Cela ne concerne pas l'identification de la machine elle-même. Cette solution traiterait chaque connexion comme une connexion de machine séparée. Ma question exige spécifiquement que la machine soit identifiée. –

+0

Si les utilisateurs sont derrière NAT est impossible, pour obtenir ce que vous demandez devrait également travailler si les utilisateurs utilisent des navigateurs différents. Question intéressante Je vais penser plus. – bleevo

+0

Si vous pouviez simplifier le problème, je pourrais vous aider, si vous voulez seulement suivre la même machine, la même connexion, le même navigateur, cela peut être fait. Juste avoir une page qui retourne un guid et définir la mise en cache de cette page à une année, encore une fois ce n'est pas très différent d'un cookie, mais il persisterait jusqu'à ce que l'utilisateur a supprimé leur cache. En dehors de cela ou de la même chose en utilisant un cookie ce que vous demandez est impossible. – bleevo