Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π‘ΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ БОМ. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° программиста». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 68

Автор Π”ΠΎΠ½Π°Π»ΡŒΠ΄ Бокс

ΠŸΡ€ΠΈ использовании уровня Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ RPC_AUTHN_LEVEL_CONNECT Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΠΌΠ΅Π½Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ, ΠΊΠ°ΡΠ°ΡŽΡ‰Π΅ΠΉΡΡ Π·Π°Ρ‰ΠΈΡ‚Ρ‹, послС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΠ»Π½ΠΎΠΌΠΎΡ‡ΠΈΠΉ Π½Π΅ осущСствляСтся. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹-Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ сообщСния Π² сСти ΠΈ Π²ΠΎΡΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ RPC-запросы ΠΏΡƒΡ‚Π΅ΠΌ простого измСнСния порядковых Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ² DCE (срСды распрСдСлСнных вычислСний) Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ². Для Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ воспроизвСдСния Π²Ρ‹Π·ΠΎΠ²Π° слСдовало Π±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ RPC_C_AUTHN_LEVEL_CALL. Он ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ SSP DLL ΠΎ нСобходимости Π·Π°Ρ‰ΠΈΡ‚Ρ‹ RPC-Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ запроса ΠΈΠ»ΠΈ ΠΎΡ‚ΠΊΠ»ΠΈΠΊΠ° RPC ΠΏΡƒΡ‚Π΅ΠΌ привязывания ΠΊ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΠΎΠΌΡƒ ΠΏΠ°ΠΊΠ΅Ρ‚Ρƒ ΠΎΠ΄Π½ΠΎΠ½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ…ΡΡˆ-ΠΊΠ»ΡŽΡ‡Π° (Π½Π° Π±Π°Π·Π΅ случайных чисСл). ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ запрос ΠΈΠ»ΠΈ ΠΎΡ‚ΠΊΠ»ΠΈΠΊ RPC ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½ частями Π² Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ ΠΎΠ΄ΠΈΠ½ сСтСвой ΠΏΠ°ΠΊΠ΅Ρ‚, Ρ‚ΠΎ RPC API ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ RPC_C_AUTHN_LEVEL_PKT. Π­Ρ‚ΠΎΡ‚ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π·Π°Ρ‰ΠΈΡ‰Π°Π΅Ρ‚ ΠΎΡ‚ воспроизвСдСния Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ сСтСвых ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², Ρ‡Ρ‚ΠΎ являСтся большСй Π·Π°Ρ‰ΠΈΡ‚ΠΎΠΉ, Ρ‡Π΅ΠΌ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ RPC_C_AUTHN_LEVEL_CALL, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ RPC-сообщСниС ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ Π΄Π²Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅.

Π”ΠΎ уровня Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ RPC_C_AUTHN_LEVEL_PKT Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ SSP DLL Π² большСй ΠΈΠ»ΠΈ мСньшСй ΠΌΠ΅Ρ€Π΅ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ„Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΏΠΎΠ»Π΅Π·Π½ΡƒΡŽ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ RPC-ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΈ Π·Π°Ρ‰ΠΈΡ‰Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ RPC-Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ². Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ состояниС ΠΌΠ°Ρ€ΡˆΠ°Π»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ враТСским Π°Π³Π΅Π½Ρ‚ΠΎΠΌ Π² сСти, Π² RPC прСдусмотрСн ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ RPC_C_AUTHN_LEVEL_PKT_INTEGRITY. Π­Ρ‚ΠΎΡ‚ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ прСдписываСт SSP DLL Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΡƒΡŽ сумму состояния ΠΌΠ°Ρ€ΡˆΠ°Π»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ содСрТимоС ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π½Π΅ Π±Ρ‹Π»ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ Π² процСссС ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΡ€ΠΈ этом ΡƒΡ€ΠΎΠ²Π½Π΅ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹ΠΉ Π±Π°ΠΉΡ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ SSP DLL, ΠΎΠ½Π° ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, Ρ‡Π΅ΠΌ ΠΏΡ€ΠΈ ΡƒΡ€ΠΎΠ²Π½Π΅ RPC_C_AUTHN_LEVEL_PKT, ΠΈ Π΅Π³ΠΎ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ситуациях, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΡ… особой Π·Π°Ρ‰ΠΈΡ‚Ρ‹.

Π”ΠΎ уровня Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ RPC_C_AUTHN_LEVEL_PKT_INTEGRITY Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ фактичСскоС содСрТаниС RPC-ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² пСрСсылаСтся ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ тСкст (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π΅Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ). Для обСспСчСния нСвидимости состояния ΠΌΠ°Ρ€ΡˆΠ°Π»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° для враТСских Π°Π³Π΅Π½Ρ‚ΠΎΠ² сСти Π² RPC прСдусмотрСн ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ RPC_C_AUTHN_LEVEL_PKT_PRIVACY. Π”Π°Π½Π½Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ прСдписываСт SSP DLL Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ состояниС ΠΌΠ°Ρ€ΡˆΠ°Π»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π΄ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ. Подобно всСм ΠΏΡ€ΠΎΡ‡ΠΈΠΌ уровням Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ RPC_C_AUTHN_LEVEL_PKT_PRIVACY Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя Π·Π°Ρ‰ΠΈΡ‚Ρƒ всСх ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ Π½ΠΈΠΆΠ΅ сСбя. Как ΠΈ Π² случаС RPC_C_AUTHN_LEVEL_PKT_INTEGRITY, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹ΠΉ Π±Π°ΠΉΡ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ SSP DLL, поэтому Π²ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°Π½ΠΈΠ΅ ΠΈΠ·Π»ΠΈΡˆΠ½ΠΈΡ… ΠΈΠ·Π΄Π΅Ρ€ΠΆΠ΅ΠΊ этот ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² особых с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния бСзопасности ситуациях.

НаиболСС Π²Π°ΠΆΠ½ΠΎΠΉ API-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ Π² слуТбС бСзопасности COM являСтся CoInitializeSecurity. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ процСсс, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΉ COM, Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ CoInitializeSecurity Ρ€ΠΎΠ²Π½ΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, явно ΠΈΠ»ΠΈ нСявно. Ѐункция CoInitializeSecurity Π²Π²ΠΎΠ΄ΠΈΡ‚ автоматичСскиС установки ΠΏΠΎ Π·Π°Ρ‰ΠΈΡ‚Π΅. Π­Ρ‚ΠΈ установки ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΊΠΎ всСм ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ ΠΈ экспортируСмым ссылкам Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ явно ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… с использованиСм Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² API-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π·Π°Ρ‰ΠΈΡ‚Ρ‹, CoInitializeSecurity ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ исполняСмый слой RPC, Π° Ρ‚Π°ΠΊΠΆΠ΅ устанавливаСт ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌΡ‹ΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для процСсса. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, CoInitializeSecurity позволяСт Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ ORPC-запросы Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, экспортируСмыС ΠΈΠ· Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ процСсса. CoInitia1izeSecurity ΠΈΠΌΠ΅Π΅Ρ‚ довольно большоС число ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²:

HRESULT CoInitializeSecurity(

[in] PSECURITY_DESCRIPTOR pSecDesc, // access control

// ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π·Π° доступом

[in] LONG cAuthSvc, // # of sec pkgs (-1 == use defaults)

// количСство ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ (-1 == ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ)

[in] SOLE_AUTHENTICATION_SERVICE *rgsAuthSvc, // SSP array

// массив SSP

[in] void *pReserved1, // reserved MBZ

// Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ О

[in] DWORD dwAuthnLevel, // auto, AUTHN_LEVEL

// аутСнтификация AUTHN_LEVEL

[in] DWORD dwImpLevel, // auto. IMP_LEVEL

// аутСнтификация IMP_LEVEL

[in] void *pReserved2, // reserved MBZ

// Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ О

[in] DWORD dwCapabilities, // misc flags

// Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ„Π»Π°Π³ΠΈ

[in] void *pReserved3 // reserved MBZ

// Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ О

);

НСкоторыС ΠΈΠ· этих ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚Π΅Ρ… случаях, ΠΊΠΎΠ³Π΄Π° процСсс выступаСт ΠΊΠ°ΠΊ экспортСр/сСрвСр. Π”Ρ€ΡƒΠ³ΠΈΠ΅ – Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли процСсс дСйствуСт ΠΊΠ°ΠΊ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π΅Ρ€/ΠΊΠ»ΠΈΠ΅Π½Ρ‚. ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Π² ΠΎΠ±ΠΎΠΈΡ… случаях.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ CoInitializeSecurity, pSecDesc, ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² случаС, ΠΊΠΎΠ³Π΄Π° процСсс выступаСт ΠΊΠ°ΠΊ экспортСр. Π­Ρ‚ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для контроля Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΈΠΌ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°Π»Π°ΠΌ – ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ ΠΈΠ»ΠΈ процСссам, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΌ ΡƒΡ‡Π΅Ρ‚Π½ΡƒΡŽ запись (principals) – Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ доступ ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ, экспортируСмым ΠΈΠ· Π΄Π°Π½Π½ΠΎΠ³ΠΎ процСсса. Π’ дСталях этот ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π±ΡƒΠ΄Π΅Ρ‚ обсуТдСн ΠΏΠΎΠ·ΠΆΠ΅ Π² Π΄Π°Π½Π½ΠΎΠΉ Π³Π»Π°Π²Π΅. Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΈ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ CoInitializeSecurity, соотвСтствСнно cAuthSvc ΠΈ rgsAuthSvc, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ процСсса Π² качСствС экспортСра для рСгистрации ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ COM. Π­Ρ‚ΠΈ Π΄Π²Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΡΡΡ‹Π»Π°ΡŽΡ‚ΡΡ Π½Π° массив описаний ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π·Π°Ρ‰ΠΈΡ‚Ρ‹:

typedef struct tagSOLE_AUTHENTICATION_SERVICE {

DWORD dwAuthnSvc; // which authentication package?

// ΠΊΠ°ΠΊΠΎΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π·Π°Ρ‰ΠΈΡ‚Ρ‹?

DWORD dwAuthzSvc; // which authorization service?

// какая слуТба Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ?

OLECHAR *pPrincipalName; // server principal name?

// имя сСрвСрного ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°Π»Π°?

HRESULT hr; // result of registration

// Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ рСгистрации

} SOLE_AUTHENTICATION_SERVICE;

Π’ Windows NT 4.0 СдинствСнной установлСнной слуТбой Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ являСтся RPC_C_AUTHN_WINNT (NTLM). ΠŸΡ€ΠΈ использовании Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ NTLM слуТба Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ (authorization service – сСрвис контроля доступа, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠΉ ΠΏΡ€Π°Π²Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°) Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½Π° ΠΊΠ°ΠΊ RPC_C_AUTHZ_NONE, Π° имя сСрвСрного ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°Π»Π° Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΈ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌ[1]. Для Ρ‚Π΅Ρ… процСссов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ просто хотят ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚ (ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹) Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ машинС, слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ значСния: cAuthSvc, Ρ€Π°Π²Π½ΠΎΠ΅ -1, ΠΈ rgsAuthSvc, Ρ€Π°Π²Π½ΠΎΠ΅ Π½ΡƒΠ»ΡŽ.

ΠŸΡΡ‚Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ CoInitializeSecurity, dwAuthnLevel, ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ ΠΊΠ°ΠΊ ΠΊ экспортируСмым, Ρ‚Π°ΠΊ ΠΈ ΠΊ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΌ ссылкам. Π’Π΅Π»ΠΈΡ‡ΠΈΠ½Π°, заданная для этого ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, устанавливаСт ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎ Π½ΠΈΠ·ΠΊΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Ρ… ссылок, экспортируСмых ΠΈΠ· этого процСсса. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‰ΠΈΠ΅ ORPC-запросы Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ Ρ‚Π°ΠΊΠΎΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ; Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС этот Π²Ρ‹Π·ΠΎΠ² Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½. Π­Ρ‚Π° Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π° опрСдСляСт Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ Π½ΠΎΠ²Ρ‹ΠΌΠΈ интСрфСйсными замСститСлями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ API-функциями ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ COM. Боздавая Π½ΠΎΠ²Ρ‹ΠΉ интСрфСйсный Π·Π°ΠΌΠ΅ΡΡ‚ΠΈΡ‚Π΅Π»ΡŒ Π²ΠΎ врСмя Π΄Π΅ΠΌΠ°Ρ€ΡˆΠ°Π»ΠΈΠ½Π³Π°, COM рассматриваСт число, ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰Π΅Π΅ Π½ΠΈΠΆΠ½ΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ, Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ экспортСром, ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ OXID. Π—Π°Ρ‚Π΅ΠΌ COM устанавливаСт ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ замСститСля Ρ€Π°Π²Π½Ρ‹ΠΌ ΠΈΠ»ΠΈ Π½ΠΈΠΆΠ½Π΅ΠΌΡƒ ΡƒΡ€ΠΎΠ²Π½ΡŽ экспортСра, ΠΈΠ»ΠΈ Π½ΠΈΠΆΠ½Π΅ΠΌΡƒ ΡƒΡ€ΠΎΠ²Π½ΡŽ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ процСсса – Π² зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ· Π½ΠΈΡ… Π²Ρ‹ΡˆΠ΅. Если процСсс, ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΡƒΡŽ ссылку, ΠΈΠΌΠ΅Π΅Ρ‚ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π½ΠΈΠΆΠ΅, Ρ‡Π΅ΠΌ ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ процСсс, Ρ‚ΠΎ для установки уровня Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π½ΠΈΠΆΠ½ΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ экспортСра. Π’Π°ΠΊΠΎΠΉ способ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ Π»ΡŽΠ±Ρ‹Π΅ ORPC-запросы, посылаСмыС интСрфСйсным замСститСлСм, ΠΏΡ€ΠΎΠΉΠ΄ΡƒΡ‚ Ρ‡Π΅Ρ€Π΅Π· Π½ΠΈΠΆΠ½ΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ экспортСра. Π”Π°Π»Π΅Π΅ Π² этой Π³Π»Π°Π²Π΅ Π±ΡƒΠ΄Π΅Ρ‚ рассмотрСно, ΠΊΠ°ΠΊ с Ρ†Π΅Π»ΡŒΡŽ Π±ΠΎΠ»Π΅Π΅ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ контроля ΠΌΠΎΠΆΠ½ΠΎ явным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ для ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ интСрфСйсного замСститСля[2].

ШСстой ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ CoInitializeSecurity, dwImpLevel примСняСтся для ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Ρ… ссылок. Π’Π΅Π»ΠΈΡ‡ΠΈΠ½Π°, опрСдСлСнная для этого ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, устанавливаСт ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ заимствования ΠΏΡ€Π°Π² (impersonation level), ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ для всСх ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Ρ… ссылок, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ CoUnmarshalInterface. Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ заимствования ΠΏΡ€Π°Π² позволяСт ΠΎΠ΄Π½ΠΎΠΌΡƒ процСссу Π·Π°ΠΈΠΌΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ Ρƒ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ процСсса ΠΈ ΠΎΡ‚Ρ€Π°ΠΆΠ°Π΅Ρ‚ ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ довСрия, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ испытываСт ΠΊ сСрвСру. Π­Ρ‚ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΠ·ΡƒΡŽΡ‰ΠΈΡ… ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ заимствования ΠΏΡ€Π°Π²:

enum {

// hide credentials of caller from object

// скрываСм ΠΎΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° полномочия Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

RPC_C_IMP_LEVEL_ANONYMOUS = 1,

// allow object to query credentials of caller

// Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ полномочия Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

RPC_C_IMP_LEVEL_IDENTIFY = 2,

// allow use of caller's credentials up to one-hop away

// Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ полномочия Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ

// ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π΅ Π΄Π°Π»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠΉ сСтСвой ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ

RPC_C_IMP_LEVEL_IMPERSONATE = 3,

// allow use of caller's credentials across multiple hops

// Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ полномочия Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ

// ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… сСтСвых ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡

RPC_C_IMP_LEVEL_DELEGATE = 4

};

Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ RPC_C_IMP_LEVEL_ANONYMOUS Π½Π΅ позволяСт Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ бСзопасности Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹[3]. Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ довСрия RPC_C_IMP_LEVEL_IDENTIFY ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ рСализация ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ довСрия RPC_C_IMP_LEVEL_IMPERSONATE ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ сСрвСр ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы с использованиСм ΠΏΠΎΠ»Π½ΠΎΠΌΠΎΡ‡ΠΈΠΉ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. На этом ΡƒΡ€ΠΎΠ²Π½Π΅ довСрия ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ полномочия Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π½ΠΎ ΠΈΠΌΠ΅ΡŽΡ‚ доступ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ рСсурсам[4]. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ этому, ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ довСрия RPC_C_IMP_LEVEL_DELEGATE Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ сСрвСру доступ ΠΊΠ°ΠΊ ΠΊ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ, Ρ‚Π°ΠΊ ΠΈ ΠΊ ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΌ рСсурсам с использованиСм ΠΏΠΎΠ»Π½ΠΎΠΌΠΎΡ‡ΠΈΠΉ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π­Ρ‚ΠΎΡ‚ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ довСрия Π½Π΅ поддСрТиваСтся ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ NTLM, Π½ΠΎ поддСрТиваСтся ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Kerberos.