2010-06-30 8 views
1

Nous observons un comportement étrange dans nos journaux de serveur Web où l'identité de l'utilisateur actuellement connecté semble être échangée avec un autre utilisateur. Je vais décrire notre mise en place avant d'expliquer plus loin. Nous exécutons un site web asp.net (v3.5 du framework) sur 2 serveurs web Windows 2008 et utilisons l'authentification par formulaires. Ils sont équilibrés en utilisant un serveur séparé exécutant Apache 2.2 sous Linux (Cent OS 5) . L'équilibrage de charge attache simplement un cookie à un utilisateur et le dirige vers un serveur particulier pour chaque requête suivante.L'identité de Windows se confondre entre les utilisateurs

On remarque sur les modèles d'occasion dans le journal comme ceci (détails) brouillées

Première entrée du journal

UserName - [email protected]

UserId - 1111

WebPage - page1

IP - IP1

Time - 2010-06-29 12: 56: 20,750

SessionId - h3uyz2fsdfegugjy452sdz0far

Deuxième entrée du journal

UserName - [email protected]

UserId - 2222

WebPage - page2

IP - ip2

Time - 2010-06-29 12: 57: 16.133

SessionId - 21ipjsdfsdfieqqwyfdokgqsb55

Nous utilisons l'authentification des formulaires en utilisant le cadre d'authentification standard des formulaires de asp.net (le contrôle de connexion standard et nous avons mis en place un fournisseur d'appartenances personnalisé).

Le nom d'utilisateur est l'identité Windows récupérée à l'aide de "HttpContext.Current.User.Identity.Name". L'ID utilisateur est l'ID de base de données défini dans la session. La sessionId est récupérée en utilisant "HttpContext.Current.Session.SessionID"

Comme vous pouvez voir la même identité Windows est la même pour 2 utilisateurs différents, sous différentes adresses IP et avec différents identifiants de session, en frappant le même site temps. Nous avons vérifié et les adresses IP provenaient d'endroits totalement différents. La mauvaise identité de Windows semble être enregistrée. UserId 2222 doit avoir un nom d'utilisateur différent enregistré. Comme il arrive très occasionnellement, le code est standard et n'a pas beaucoup changé depuis un certain temps nous ne pensons pas qu'il s'agit d'une erreur de codage. Nous supposons soit un problème avec l'équilibreur de charge, soit un problème sur le serveur Web. Je n'ai jamais entendu parler de tels problèmes sur asp.net auparavant.

Récemment, nous avons modifié notre configuration d'IIS6 sur Windows 2003 et un équilibreur de charge matérielle Cisco pour l'installation actuelle de IIS7 sur Windows 2008 et l'équilibrage de charge Apache. Toutes les idées ont apprécié.

L'entrée d'authentification de formulaires sur le Web.config est

mode d'authentification = "Forms"

forme loginUrl name = "LoginPage.aspx" = "ASPXFORMSAUTH"

+0

Avez-vous plus d'un site Web fonctionnant sur vos serveurs? – TheGeekYouNeed

+0

Oui, il existe 2 sites Web – scottrm

+0

Lorsque vous dites que vous avez désactivé la mise en cache de sortie, voulez-vous dire que vous l'avez désactivé ou que vous avez supprimé toutes les directives de mise en cache? Nous voyons la même chose! –

Répondre

0

Êtes-vous fixer de variables de session? L'ID de session est réinitialisé pour chaque requête, sauf si vous stockez quelque chose, n'importe quoi en session pour chaque utilisateur.

0

Vous devez garantir que le cookie de chaque utilisateur est unique. Vous ne pouvez pas dépendre du fichier session.

Questions connexes