4 votes

Problème d'usurpation d'identité ASP classique sur un serveur IIS7 Windows 2008

J'essaie d'écrire dans un fichier sur un serveur (web05) à partir d'un site asp classique fonctionnant sous Windows 2008 serer sur IIS7 (webadmin). Cela échoue et web05 enregistre une tentative de connexion anonyme au cours de l'opération d'enregistrement.

Le site Webadmin fonctionne sur un pool d'applications en mode classique avec un utilisateur du domaine comme compte de processus. Le compte de processus a le droit de "Trust this user for delegation to any service (Kerberos only)". Il en va de même pour les serveurs web05 et webadmin.

Le site utilise l'authentification Windows et l'idée est que lorsque je me connecte au site avec mon utilisateur de domaine, les droits de mon utilisateur doivent définir ce que je suis autorisé à faire dans le contexte du site IIS. Si j'active l'authentification de base, tout fonctionne bien.

J'ai également utilisé setspn.exe pour ajouter un SPN pour l'URL. Si je tape setspn.exe -L webadmin, j'obtiens :

HTTP/webadmin.companyname.com
TERMSRV/webadmin
TERMSRV/webadmin.companypub.local
HOST/webadmin
HOST/webadmin.companypub.local

D'après ce que j'ai compris, les SPN sont correctement configurés.

Si j'exécute processmonitor sur webadmin pendant que l'opération de sauvegarde est exécutée, il indique que le processus se fait effectivement passer pour mon utilisateur de domaine - mais obtient "Accès refusé" (et comme je l'ai déjà dit, web05 enregistre une tentative de connexion anonyme).

Une idée de la cause de ce phénomène ?

Bien à vous, Simon

4voto

AnthonyWJones Points 122520

J'ai l'impression que vous êtes un peu confus au sujet de l'imitation. Le processus ne se fait pas passer pour le compte de l'utilisateur du domaine, il s'exécute simplement en tant qu'utilisateur. Il y a une différence.

Lorsqu'une requête arrive dans le système ASP, celui-ci se fait passer pour un utilisateur et le thread traitant la requête s'exécute sous le jeton de sécurité de l'utilisateur usurpé. Il est tout à fait possible que le même processus se fasse passer pour plusieurs utilisateurs différents dans plusieurs threads. Dans la plupart des cas où l'accès à l'utilisateur anonyme est activé, cet utilisateur est le niveau invité. IUSR compte. Il est très probable que c'est sous cet utilisateur que votre code tente de s'exécuter et échoue.

Toutefois, si l'anonymat est désactivé pour la ressource à laquelle on accède ou si l'option IUSR n'a pas accès à la ressource, la réponse 401 est renvoyée, avec des indications sur les protocoles d'authentification acceptés. Le navigateur peut alors tenter d'authentifier la connexion en utilisant les informations d'identification de l'utilisateur actuel ou en demandant des informations d'identification à l'utilisateur.

Vous ne précisez pas exactement comment vous essayez d'enregistrer le fichier. Cela vaut la peine de souligner quelques points.

  1. L'extraction de code ASP qui peut ensuite aboutir à un accès refusé n'utilisera pas le mécanisme ci-dessus pour tenter de résoudre le problème de l'utilisateur.
  2. Une fois qu'une connexion est authentifiée, elle continue souvent à être réutilisée pour les demandes suivantes (ce qui est contraire à l'idée que le protocole HTTP est un protocole "sans connexion").

0voto

nitech Points 312

J'essaie de mettre de l'ordre dans mes questions précédentes. Cette réponse n'est pas suffisante pour répondre à la question ci-dessus, mais j'ai conclu qu'il valait mieux fournir quelques informations que rien du tout. Si op n'est pas d'accord, veuillez prendre les mesures nécessaires.

Cela remonte à loin, mais je me souviens avoir voulu faire fonctionner l'authentification Kerberos sur cette application. Le problème était que j'essayais de faire du kerberos en dehors du pare-feu. L'application fonctionnait bien à l'intérieur du domaine et du pare-feu du domaine d'origine du serveur, mais échouait dès que les demandes provenaient de l'extérieur.

J'ai beaucoup discuté avec un technicien irlandais de Microsoft, et il m'a appris un peu plus sur les limites de l'utilisation de Kerberos. La raison pour laquelle je voulais utiliser Kerberos était que je n'aimais pas l'idée que l'authentification Windows de base ne soit pas cryptée.

Bonne chance dans votre quête de Kerberos :-)

0voto

Bill H Points 1

J'ai rencontré le même problème et il s'est avéré qu'il s'agissait d'une simple modification du pool d'applications. Si l'option "enable 32-bit applications" est définie sur FALSE, je reçois une invitation à me connecter à la machine. En mettant cette valeur à true, le problème est résolu.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X