L'usurpation d'identité et NetworkCredential
J'ai besoin de passer un NetworkCredential
objet avec les informations d'identification de la actuellement à l'identité de l'utilisateur à un service web à partir d'un asp.net demande.
Mon code ressemble à ceci:
WindowsIdentity windowsIdentity = HttpContext.Current.User.Identity as WindowsIdentity;
WindowsImpersonationContext context = windowsIdentity.Impersonate();
try {
var client = GetClient();
client.ClientCredentials.Windows.ClientCredential = CredentialCache.DefaultNetworkCredentials;
Log("WindowsIdentity = {0}", windowsIdentity.Name);
Log("DefaultNetworkCredentials = {0}", CredentialCache.DefaultNetworkCredentials.UserName);
client.DoSomething();
} finally {
context.Undo();
}
J'avais compris que CredentialCache.DefaultNetworkCredentials
doit donner les informations d'identification de la actuellement à l'identité de l'utilisateur, mais il n'est pas le cas.
Le journal des messages que je reçois sont
WindowsIdentity = TESTDOMAIN\TESTUSER
DefaultNetworkCredentials =
Je fais quelque chose de mal? Si oui, comment voulez-vous obtenir un NetworkCredential objet pour l'identité de l'utilisateur?
N'est-ce pas une manifestation de la double-hop problème? blogs.msdn.com/knowledgecast/archive/2007/01/31/...
Oui, semble liée à la double-hop problème que le jeton secondaire, vous aurez en ASP ne vous donnera pas d'informations d'identification réseau.
Oui, semble liée à la double-hop problème que le jeton secondaire, vous aurez en ASP ne vous donnera pas d'informations d'identification réseau.
OriginalL'auteur Paolo Tedesco | 2010-01-14
Vous devez vous connecter pour publier un commentaire.
Un peu long article dans MSDN expliquant les options pour obtenir des informations d'identification réseau à l'ASP:
Un autre article de blog sur le sujet (même si je n'ai pas vérifier si la solution fonctionne réellement:
Le deuxième article, qui définit une classe qui nécessite un mot de passe et transmis en tant que paramètre. Je pense que l'intérêt de l'emprunt d'identité serait dans un mode d'Authentification Windows d'être en mesure d'utiliser les Principales et de l'Identité pour accéder aux ressources du réseau. Comme l'affiche suivante indiqué, la méthode simple n'est pas possible au-delà de la machine locale (sans kerberos, qui n'est pas simple...)
OriginalL'auteur Dirk Vollmar
Il n'est pas possible d'utiliser la asp.net avec emprunt d'identité d'utilisateur (
Current.User.Identity
) pour l'authentification réseau, il ne fonctionne qu'en local.OriginalL'auteur Pent Ploompuu