Personifieringsnivåer
Om personifieringen lyckas innebär det att klienten har gått med på att låta servern vara klienten i viss utsträckning. De varierande graderna av personifiering kallas personifieringsnivåer, och de anger hur mycket auktoritet som ges till servern när den personifierar klienten.
För närvarande finns det fyra personifieringsnivåer: anonym, identifiera, personifieraoch delegera. I följande lista beskrivs kortfattat varje personifieringsnivå:
-
anonym (RPC_C_IMP_LEVEL_ANONYMOUS)
-
Klienten är anonym för servern. Serverprocessen kan personifiera klienten, men personifieringstoken innehåller ingen information om klienten. Den här nivån stöds endast för lokal kommunikation mellan processer. Alla andra transporter höjer tyst upp den här nivån för att identifiera.
-
identifiera (RPC_C_IMP_LEVEL_IDENTIFY)
-
Systemets standardnivå. Servern kan hämta klientens identitet och servern kan personifiera klienten för att utföra ACL-kontroller.
-
personifiera (RPC_C_IMP_LEVEL_IMPERSONATE)
-
Servern kan personifiera klientens säkerhetskontext när den agerar för klientens räkning. Servern kan komma åt lokala resurser som klient. Om servern är lokal kan den komma åt nätverksresurser som klient. Om servern är fjärransluten kan den bara komma åt resurser som finns på samma dator som servern.
-
ombud (RPC_C_IMP_LEVEL_DELEGATE)
-
Den mest kraftfulla personifieringsnivån. När den här nivån har valts kan servern (oavsett om den är lokal eller fjärransluten) personifiera klientens säkerhetskontext samtidigt som den agerar för klientens räkning. Under personifieringen kan klientens autentiseringsuppgifter (både lokala och nätverk) skickas till valfritt antal datorer.
För att personifiering ska fungera på delegatnivå måste följande krav uppfyllas:
- Klienten måste ange personifieringsnivån till RPC_C_IMP_LEVEL_DELEGATE.
- Klientkontot får inte markeras som "Kontot är känsligt och kan inte delegeras" i Active Directory-tjänsten.
- Serverkontot måste markeras med attributet "Betrodd för delegering" i Active Directory-tjänsten.
- Datorerna som är värdar för klienten, servern och alla "underordnade" servrar måste alla köras i en domän.
Genom att välja personifieringsnivå meddelar klienten servern hur långt den kan gå för att personifiera klienten. Klienten anger personifieringsnivån på den proxy som används för att kommunicera med servern.
Ange personifieringsnivå
Det finns två sätt att ange personifieringsnivån:
- Klienten kan ställa in den i hela processen via ett anrop till CoInitializeSecurity.
- En klient kan ange säkerhet på proxynivå i ett gränssnitt för ett fjärrobjekt via ett anrop till IClientSecurity::SetBlanket (eller hjälpfunktionen CoSetProxyBlanket).
Du anger personifieringsnivån genom att skicka ett lämpligt RPC_C_IMP_LEVEL_xxx värde till CoInitializeSecurity eller CoSetProxyBlanket via parametern dwImpLevel.
Olika autentiseringstjänster stöder personifiering på delegatnivå i olika utsträckning. NTLMSSP stöder till exempel personifiering på korstråds- och korsprocessdelegatnivå, men inte mellan datorer. Å andra sidan stöder Kerberos-protokollet personifiering på delegatnivå över datorgränser, medan Schannel inte stöder någon personifiering på delegatnivå. Om du har en proxy på personifieringsnivå och du vill ange personifieringsnivån som delegerad bör du anropa SetBlanket med standardkonstanterna för varje parameter utom personifieringsnivån. COM väljer NTLM lokalt och Kerberos-protokollet via fjärranslutning (när Kerberos-protokollet fungerar).
Relaterade ämnen