L'emprunt d'identité de l'utilisateur en cours à l'aide de WindowsImpersonationContext pour accéder à un lecteur réseau
J'ai besoin d'accéder à un lecteur distant à partir d'une Application Web. Le lecteur n'est pas accessible à l'ASP.NET processus, donc je veux emprunter l'identité de l'utilisateur actuel de la demande.
J'ai vu quelques exemples de base à l'aide de WindowsImpersonationContext, et ont essayé de la suivante.
WindowsImpersonationContext impersonationContext = null;
try
{
impersonationContext = ((WindowsIdentity)User.Identity).Impersonate();
file.SaveAs(filePath);
}
finally
{
if (impersonationContext != null)
{
impersonationContext.Undo();
}
}
Je suis encore en train un accès refusé d'exception.
J'ai lu un peu de choses à propos de l' LogonUser
, mais aussi loin que je peux dire que vous avez besoin d'un nom d'utilisateur et mot de passe pour obtenir les informations d'identification. Je ne cherche pas à vous connecter avec un autre utilisateur spécifique, juste de l'utilisateur actuel (qui doit avoir des autorisations d'accès à la banque de fichiers), donc je ne pense pas que j'ai réellement besoin de la LogonUser
API.
Quelqu'un a une idée de ce que je suis absent? Si le code ci-dessus fonctionne?
Je voudrais aussi noter que, y compris
<identity impersonate="true" />
ne fonctionne pas, mais y compris les
<identity impersonate="true" userName="myName" password="myPassword" />
dans le web.config
me permet de. J'ai vu un peu les gens poser des questions sur le pourquoi, mais je n'ai pas vu d'explication. Je me demande si c'est lié à mon problème.
IIS est configuré pour utiliser la Fenêtre de l'identité. Merci
OriginalL'auteur fearofawhackplanet | 2010-10-08
Vous devez vous connecter pour publier un commentaire.
J'ai écrit une classe d'assistance qui n':
Vous pouvez l'utiliser comme ça:
Plus d'explications et des exemples que vous pouvez trouver ici :
Usurpation de l'identité d'CurrentUser de SYSTÈME
J'ai été frapper ma tête depuis 2 jours sur ce problème! Chaque appel à Active Directory a été s'écraser lors de l'utilisation de Chrome. Votre classe l'a fait! Fonctionne comme un charme et facile à utiliser! MERCI!!!!!
A très bien fonctionné. Des choses incroyables.
OriginalL'auteur Amir Yonatan
Vous êtes probablement un emprunt d'identité vs problème de Délégation. Lorsque vous emprunter l'identité d'un utilisateur, vous pouvez accéder à des ressources locales en tant qu'utilisateur, mais pas à des ressources distantes. Avec la Délégation, vous pouvez accéder à distance à des ressources aussi. Essayez ce qui suit:
<authentication mode="Windows" />
dans votre site web.config pour assurer ASP.NET les processus d'authentification Windows (ce qui ne devrait s'appliquer qu'à des Classiques mode pipeline).<identity impersonate="true" />
devrait être suffisant.L'autre chose que vous devez faire est de s'assurer que le compte qui exécute le pool d'applications est autorisé à agir comme un délégué.
OriginalL'auteur Matthew Abbott