2010-06-11 1 views
1

Comment obtenir un objet ICredential dans mon application Web?Comment obtenir ICredential de l'exécution d'un utilisateur dans asp.net

  • J'utilise l'authentification Windows

J'ai essayé en utilisant le code suivant:

WindowsImpersonationContext securityContext = 
     Request.LogonUserIdentity.Impersonate(); 

Après la dernière ligne de code à la fois: CredentialCache.DefaultCredentials et CredentialCache.DefaultNetworkCredentials sont encore vides .

Je sais que l'identité est juste parce que la propriété suivante montre le bon domaine \ compte utilisateur J'utilise: Request.LogonUserIdentity.Name => « domain \ user »

C'est le type d'authentification de cet objet:

Request.LogonUserIdentity.AuthenticationType => "NTLM"

Répondre

0

Où en avez-vous besoin?

Vous pouvez récupérer le nom d'utilisateur de System.Threading.Thread.CurrentPrincipal.Identity

2

Afin d'obtenir une mise en œuvre ICredential de l'utilisateur, vous devez d'abord obtenir une prise de WindowsIdentity pour l'utilisateur (par exemple par le biais Page.User.Identity). Avec l'objet WindowsIdentity vous pouvez impersonate l'utilisateur. Après une usurpation d'identité réussie, vous pouvez obtenir les informations d'identification pour l'utilisateur via CredentialCache.DefaultCredentials.

La question est maintenant, que voulez-vous faire avec les informations d'identification? Si vous souhaitez utiliser ces informations d'identification pour accéder à des ressources sur un serveur différent, vous devez probablement activer la délégation Keberos pour autoriser le saut de serveur. Je ne sais pas comment faire cela :-)

+0

J'ai essayé cette approche, mais j'ai toujours le CredentialCache vide (j'ai mis à jour le poste avec le code que j'ai utilisé) – tivo

+0

Avez-vous mis dans web.config? Je ne sais pas si c'est important. Peut-être qu'il n'est pas possible d'usurper l'identité de cette manière dans une application ASP.NET. –

Questions connexes