ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΡΠΎΠ²Π½Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ 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.