Sdílet prostřednictvím


Nastavení zabezpečení Process-Wide pomocí CoInitializeSecurity

Funkce CoInitializeSecurity umožňuje řídit složité scénáře zabezpečení nastavením zabezpečení pro aplikaci prostřednictvím kódu programu. Toto téma popisuje scénáře, kdy můžete použít CoInitializeSecurity a poskytuje několik podrobností o tom, jak ho používáte.

Existuje několik důvodů, proč můžete chtít použít CoInitializeSecurity k nastavení zabezpečení v rámci celého procesu v rámci programu. I když můžete například nastavit úroveň ověřování a přístupová oprávnění pro aplikaci pomocí dcomcnfg.exe, výchozí úroveň zosobnění počítače nemusí být ta, kterou chcete pro svůj proces použít. Jediným způsobem, jak změnit toto nastavení pro váš proces, je volat CoInitializeSecurity.

Pokud chcete použít zprostředkovatele zabezpečení Schannel, musíte jej specifikovat jako ověřovací službu při volání CoInitializeSecurity.

Dalším běžným scénářem, ve kterém můžete nastavit zabezpečení celého procesu prostřednictvím kódu programu, je, když chcete nastavit výchozí zabezpečení pro celý proces, ale máte jeden nebo více objektů v rámci procesu, které zpřístupňují rozhraní se zvláštními požadavky na zabezpečení. V tomto případě můžete volat CoInitializeSecurity, aby bylo nastaveno zabezpečení procesu, což modelu COM umožní postarat se o většinu kontrol s tím souvisejících, a můžete volat jiné metody pro nastavení zabezpečení objektů se zvláštními bezpečnostními potřebami. Volání těchto metod a funkcí je popsáno v Nastavení zabezpečení na úrovni proxy rozhraní.

Pokud má vaše aplikace velmi specializované požadavky na zabezpečení, jako je například povolení přístupu určitých skupin k různým objektům v závislosti na denní době, můžete chtít zpracovávat veškeré zabezpečení prostřednictvím kódu programu a zajistit, aby objekt COM pro vás vůbec nekontroloval automatickou kontrolu. Chcete-li to provést, musíte volat CoInitializeSecurity, nastavením parametru dwAuthnLevel na none a parametru pVoid na NULL. Pokud máte vlastní balíček zabezpečení, musíte ho také zaregistrovat v parametru pAuthnSvc. Pak můžete zpracovat všechny své vlastní zabezpečení programově prostřednictvím volání rozhraní na úrovni proxy a funkcí popsaných v tématu Nastavení zabezpečení na úrovni proxy rozhraní.

CoInitializeSecurity nabízí bohatou sadu funkcí. Pokud voláte CoInitializeSecurity, hodnoty registru se ignorují a použijí se hodnoty inicializace zabezpečení, které předáte do volání. V závislosti na požadovaném výsledku může první parametr pVoidodkazovat na tři různé typy hodnot: SECURITY_DESCRIPTOR, objekt IAccessControl nebo ukazatel na AppID. Ve většině případů použijete funkce Systému Windows pro vytvoření SECURITY_DESCRIPTOR, na které bude ukazovat pVoid.

pVoid však mohou také odkazovat na objekt IAccessControl.

Chcete-li indikovat CoInitializeSecurity, že předáváte objekt IAccessControl do pVoid, je nutné předat hodnotu EOAC_ACCESS_CONTROL parametru dwCapabilities. Protože CoInitializeSecurity ukládá výsledky kontrol přístupu do mezipaměti, seznam řízení přístupu nesmí být změněn po volání CoInitializeSecurity.

Dalším typem hodnoty, kterou můžete předat parametru pVoid, je ukazatel na identifikátor GUID, což je AppID vaší aplikace. Pokud pVoid je ukazatel na AppID, je nutné zadat EOAC_APPID v parametru pCapabilities, aby funkce věděla, jakou hodnotu mají očekávat v pVoid. Pokud pVoid odkazuje na AppID, CoInitializeSecurity používá pouze registr pro ověřovací hodnoty a ignoruje všechny ostatní parametry pro CoInitializeSecurity.

Nastavení zabezpečení Process-Wide