A noterCet article s'applique à un système d'exploitation différent de celui que vous utilisez. Le contenu de l'article qui ne vous concerne peut-être pas est désactivé.
Cet article décrit l'emprunt d'identité et le contexte de sécurité pour les pages ASP (Active Server Pages). Il fournit des exemples de code pour une Microsoft Visual Basic ActiveX dynamic-link bibliothèque (DLL) qui peut être instancié à partir d'une page ASP pour emprunter l'identité d'un utilisateur et de modifier le contexte de sécurité de la thread actuelle.
Par défaut, ASP s'exécute dans le contexte de sécurité de l'utilisateur avec emprunt d'identité. Lorsqu'une demande d'un fichier ASP est effectuée, le serveur Web utilise un thread de travail et attribue le contexte de sécurité de ce thread à un utilisateur avec emprunt d'identité. La méthode d'authentification Internet (IIS) (anonyme, Basic, NT intégrée et ainsi de suite) détermine l'utilisateur avec emprunt d'identité. Ensuite, le code ASP s'exécute dans le contexte de cet utilisateur.
Lorsque vous Emprunter l'identité d'un utilisateur, vous pouvez résoudre les conflits de sécurité suivants dans votre application :
Une application qui utilise sécurité NT intégrée (NTLM) ou de Kerberos pour authentifier auxquelles doit accéder une ressource réseau (comme un fichier, une base de données Access ou SQL Server) via le protocole canaux nommés.
Une application qui accède à une ressource réseau à partir de l'événement Session_OnEnd ou Application_OnEnd .
Les événements Session_OnEnd et Application_OnEnd exécuter avec l'identité du processus. Pour les applications protection application in-process ou bas, ceci est l'ID d'utilisateur système et le processus est le fichier Inetinfo.exe. Plutôt que d'emprunt d'identité, vous pouvez exécuter dans un processus mémoire distinct ou avec une application élevée (isolée) protection et définissez l'identité du package Microsoft Transaction Server (MTS) ou l'application COM + à l'ID utilisateur désirée.
Une application qui prend en charge plusieurs utilisateurs connectés à la WinNT: / / espace de noms via Microsoft Services interface ADSI (Active Directory).
Ces connexions sont mis en cache avec les informations d'identification sécurité du premier utilisateur qui ouvre la connexion. Emprunt d'identité garantit qu'un seul utilisateur ouvre la connexion ; par conséquent, informations d'identification de cet utilisateur correspondent aux informations d'identification mises en cache.
L'emprunt d'identité utilise ces trois fonctions :
La fonction LogonUser reçoit les informations d'ouverture de session (ID d'utilisateur, mot de passe et ainsi de suite) et renvoie le jeton de sécurité pour une connexion valide.
La fonction ImpersonateLoggedOnUser reçoit le jeton de sécurité de LogonUser et l'applique au thread actuel.
La fonction RevertToSelf renvoie le thread au contexte de sécurité du processus d'origine.
RevertToSelf est extrêmement important lorsque vous emprunter l'identité d'ASP. Elle est appelée avant LogonUser et ImpersonateLoggedOnUser pour vérifier que le contexte de sécurité actuel a la possibilité d'emprunter l'identité. (Si vous êtes emprunt déjà d'identité, qui sont à partir d'ASP, vous probablement êtes inutile l'autorité nécessaire pour emprunter l'identité.) RevertToSelf est appelé à la fin du traitement de la page pour vérifier que l'utilisation suivante de la thread a le contexte de sécurité appropriés, c'est-à-dire, l'identité du processus d'origine.
La DLL ActiveX suivant comporte deux méthodes : Ouverture et fermeture de session . Ouverture de session modifie le contexte de la thread en un nouveau code d'utilisateur et fermeture de session revient à l'identité du processus d'origine. Pour créer la DLL, procédez comme suit :
Dans Visual Basic 6.0, créez un nouveau projet DLL ActiveX nommé LoginAdmin.
Modifier le nom du module de classe initiale à ImpersonateUser.
Ajouter un module intitulé LogonAPIs.bas, dans le projet, puis collez le code suivant pour que l'API appeler disponible pour votre classe :
Public Declare Function LogonUser Lib "advapi32.dll" _
Alias "LogonUserA" (ByVal lpszUsername As String, _
ByVal lpszDomain As String, ByVal lpszPassword As String, _
ByVal dwLogonType As Long, ByVal dwLogonProvider As Long, _
phToken As Long) As Long
Public Declare Function ImpersonateLoggedOnUser Lib "advapi32.dll" (ByVal hToken As Long) As Long
Public Declare Function RevertToSelf Lib "advapi32.dll" () As Long
Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Ouvrez le module de classe ImpersonateUser, puis puis collez le code suivant pour créer les méthodes d'ouverture et fermeture de session :
Private Const LOGON32_LOGON_INTERACTIVE = 2
Private Const LOGON32_PROVIDER_DEFAULT = 0
Public Sub Logon(ByVal strAdminUser As String, ByVal _
strAdminPassword As String, ByVal strAdminDomain As String)
Dim lngTokenHandle, lngLogonType, lngLogonProvider As Long
Dim blnResult As Boolean
lngLogonType = LOGON32_LOGON_INTERACTIVE
lngLogonProvider = LOGON32_PROVIDER_DEFAULT
blnResult = RevertToSelf()
blnResult = LogonUser(strAdminUser, strAdminDomain, strAdminPassword, _
lngLogonType, lngLogonProvider, _
lngTokenHandle)
blnResult = ImpersonateLoggedOnUser(lngTokenHandle)
CloseHandle (lngTokenHandle)
End Sub
Public Sub Logoff()
Dim blnResult As Boolean
blnResult = RevertToSelf()
End Sub
Remarque : l'appel à LogonUser transmet un type d'ouverture de session de LOGON32_LOGON_INTERACTIVE. L'ouverture de session interactive permet accéder aux ressources réseau autres types d'ouverture de session n'est pas le cas.
Enregistrer les fichiers de projet.
Dans le menu Fichier , cliquez sur Créer LoginAdmin.dll pour compiler le fichier DLL ActiveX.
Copiez LoginAdmin.dll sur le serveur Web et ensuite utilisez Regsvr32.exe enregistrer (tapez regsvr32.exe c:\components\LoginAdmin.dll à une invite de commandes).
Une fois que la DLL ActiveX est enregistrée, vous pouvez appeler il à partir d'une page ASP comme suit :
<%
Option Explicit
Dim objLogon
Set objLogon = Server.CreateObject("LoginAdmin.ImpersonateUser")
objLogon.Logon "Userid", "Password", "Domain"
'Body of code for the page.
objLogon.Logoff
Set objLogon = Nothing
%>
Remarque : lorsque vous appelez RevertToSelf , la page ASP s'exécutera dans le contexte de sécurité du processus. Pour les applications en cours, ceci est le compte système. Toutefois, pour les applications pool ou isolées, ceci est l'identité du package COM + qui est configuré pour pool d'applications ou pour l'application isolée proprement dite. <computername>Par défaut, l'identité de ces packages COM + est définie sur IWAM_ <nom_ordinateur>. Si ce compte n'a pas privilèges « agir en tant que partie du système d'exploitation », l'appel suivante LogonUser échoue à cause d'une violation d'autorisations. <computername>En guise de solution de contournement, soit activer droits « Agir en tant que partie du système d'exploitation » pour le IWAM_ <nom_ordinateur> compte ou de configurer l'identité du package COM + pour s'exécuter sous un compte possédant ces privilèges.
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 248187
(http://support.microsoft.com/kb/248187/en-us/
)
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.
Ces informations vous ont-elles aidé ?
Oui
Non
Plutôt
Quel niveau d'effort avez-vous dû personnellement fournir pour utiliser cet article ?
Très faible
Faible
Moyen
Elevé
Très élevé
Dites-nous pourquoi et ce que nous pouvons faire pour améliorer ces informations.
Merci ! Vos commentaires sont très utiles pour l'amélioration de notre contenu d'aide et de support. Si vous avez besoin d'aide complémentaire, veuillez consulter la page d'accueil d'aide et support.