J'ai une application ASP.NET utilisant l'authentification Windows, et je teste l'existence d'un fichier sur un serveur distant. Je m'authentifie en tant que MYDOMAIN \ mon.nom d'utilisateur - cela fonctionne.File.Exists() renvoyant incorrectement false à ASP.NET - problème de sécurité lié à Thread vs Processus?
Le fichier est \ MYSERVER \ WebShare \ example.txt. Ce fichier existe. Je peux l'ouvrir à partir de différents hôtes en étant connecté en tant que MYDOMAIN \ my.username. Sous l'Explorateur Windows, les autorisations effectives indiquent que MYDOMAIN \ my.username a le contrôle total de ce fichier.
Si je joins un débogueur et le type $user
dans la fenêtre de la montre, je peux voir que le fil courant fonctionne comme MYDOMAIN \ my.username, tandis que le processus actuel est toujours en cours d'exécution comme NT AUTHORITY\NETWORK SERVICE
- les bits correspondants de la fenêtre de la montre sont reproduites ci-dessous:
$user {...} $user register
+- Process {...} TOKEN
| +- Name NT AUTHORITY\NETWORK SERVICE User Name
| +- User SID S-1-5-20 SID
| +- Session Id 0 DWORD
| +- Loggin Id 000003e4-00000000 LUID
| +- Impersonation Level N/A (not impersonating) SECURITY_IMPERSONATION_LEVEL
+- Thread {...} TOKEN
+- Name MYDOMAIN\my.username User Name
+- User SID S-1-5-21-... SID
+- Session Id 0 DWORD
+- Loggin Id 018622ef-00000000 LUID
+- Impersonation Level Impersonate SECURITY_IMPERSONATION_LEVEL
le serveur qui exécute ASP.NET est un membre du groupe MYDOMAIN \ Webservers, ce qui a le contrôle complet du fichier partagé.
Voici ce que je ne comprends pas:
- Lorsque .NET tente d'interroger File.Exists, est-ce le fil ou processus identité qui est utilisé?
- Si elle utilise les informations d'identification de processus, comment puis-je forcer le processus à s'exécuter en tant que MYDOMAIN \ my.username ou autoriser le compte NETWORK SERVICE à lire le fichier? (Je pensais que cela avait déjà été fait en ajoutant mon compte d'ordinateur - mais cela ne fonctionne pas ...)
- S'il utilise les informations d'identification du thread - pourquoi ne puis-je pas lire le fichier?
Tous les pointeurs ou astuces de débogage utiles seraient très appréciés.
Merci,
Dylan
Quelle version du framework utilisez-vous? –
J'utilise .NET Framework v3.5, développement sur Windows 7 x64 RC, déploiement sur Windows Server 2008 x86. –
comment vous formatez l'arbre Processus {...} JETON ?? – Kiquenet