Niveaux d’emprunt d’identité

Si l’emprunt d’identité réussit, cela signifie que le client a accepté de laisser le serveur être le client dans une certaine mesure. Les différents degrés d’emprunt d’identité sont appelés niveaux d’emprunt d’identité, et ils indiquent la quantité d’autorité accordée au serveur lorsqu’il emprunte l’identité du client.

Actuellement, il existe quatre niveaux d’emprunt d’identité : anonyme, identifier, emprunter l’identité et déléguer. La liste suivante décrit brièvement chaque niveau d’emprunt d’identité :

anonyme (RPC_C_IMP_LEVEL_ANONYMOUS)

Le client est anonyme au serveur. Le processus serveur peut emprunter l'identité du client, mais le jeton d'emprunt d'identité ne contient pas d'informations sur le client. Ce niveau est pris en charge uniquement sur le transport de communication interprocessus local. Tous les autres transports favorisent silencieusement ce niveau pour identifier.

identifier (RPC_C_IMP_LEVEL_IDENTIFY)

Niveau par défaut du système. Le serveur peut obtenir l'identité du client et peut emprunter l'identité du client pour vérifier des listes ACL.

impersonate (RPC_C_IMP_LEVEL_IMPERSONATE)

Le serveur peut emprunter l'identité du contexte de sécurité du client tout en agissant au nom du client. Le serveur peut accéder aux ressources locales sous l'identité du client. Si le serveur est local, il peut accéder aux ressources réseau en tant que client. Si le serveur est distant, il peut accéder uniquement aux ressources qui se trouvent sur le même ordinateur que le serveur.

délégué (RPC_C_IMP_LEVEL_DELEGATE)

Niveau d'emprunt d'identité le plus puissant. Quand ce niveau est sélectionné, le serveur (local ou distant) peut emprunter l’identité du contexte de sécurité du client tout en agissant au nom du client. Pendant l’emprunt d’identité, les informations d’identification du client (local et réseau) peuvent être passées à n’importe quel nombre d’ordinateurs.

Pour que l’emprunt d’identité fonctionne au niveau du délégué, les conditions suivantes doivent être remplies :

  • Le client doit définir le niveau d’emprunt d’identité sur RPC_C_IMP_LEVEL_DELEGATE.
  • Le compte client ne doit pas être marqué « Le compte est sensible et ne peut pas être délégué » dans le service Active Directory.
  • Le compte de serveur doit être marqué avec l’attribut « Approuvé pour la délégation » dans le service Active Directory.
  • Les ordinateurs hébergeant le client, le serveur et les serveurs « en aval » doivent tous s’exécuter dans un domaine.

En choisissant le niveau d’emprunt d’identité, le client indique au serveur jusqu’où il peut aller dans l’emprunt d’identité du client. Le client définit le niveau d’emprunt d’identité sur le proxy qu’il utilise pour communiquer avec le serveur.

Définition du niveau d’emprunt d’identité

Il existe deux façons de définir le niveau d’emprunt d’identité :

Vous définissez le niveau d’emprunt d’identité en passant une valeur de RPC_C_IMP_LEVEL_xxx appropriée à CoInitializeSecurity ou CoSetProxyBlanket via le paramètre dwImpLevel .

Différents services d’authentification prennent en charge l’emprunt d’identité au niveau des délégués à différentes étendues. Par instance, NTLMSSP prend en charge l’emprunt d’identité au niveau des délégués inter-threads et interprocesseurs, mais pas entre ordinateurs. En revanche, le protocole Kerberos prend en charge l’emprunt d’identité au niveau des délégués au-delà des limites de l’ordinateur, tandis que Schannel ne prend pas en charge l’emprunt d’identité au niveau du délégué. Si vous avez un proxy au niveau de l’emprunt d’identité et que vous souhaitez définir le niveau d’emprunt d’identité sur délégué, vous devez appeler SetBlanket à l’aide des constantes par défaut pour chaque paramètre, à l’exception du niveau d’emprunt d’identité. COM choisit NTLM localement et le protocole Kerberos à distance (lorsque le protocole Kerberos fonctionnera).

Délégation et emprunt d’identité