Poskytovatelé služeb zabezpečení
Rozhraní SSPI (Security Service Provider Interface) poskytuje univerzální standardní rozhraní pro zabezpečené distribuované aplikace. Rozhraní PEER Graphing API poskytuje aplikacím způsob zabezpečení propojení v grafu zadáním zprostředkovatele služby zabezpečení (SSP), což je knihovna DLL, která implementuje rozhraní SSPI. Aplikace určuje ZSP při vytváření grafu pomocí PeerGraphCreate.
Další informace o vytvoření vlastního ZSP naleznete v dokumentaci SSPI v seznamu odkazů Graphing Reference.
Aspekty programování pro implementaci ZSP
Při volání do aplikace z z zprostředkovatele sdílených služeb buďte opatrní. U zpětných volání ZSP platí následující aspekty:
- Vrácení zpětného volání by nemělo trvat dlouho, protože se volají během vyjednávání připojení. Pokud navázání připojení trvá příliš dlouho, je možné připojení vynechat.
- Rozhraní Peer Graphing API dynamicky upravuje hodnoty časového limitu připojení na základě skutečného zatížení systému. Nejnižší hodnota časového limitu je 20 sekund.
- Aby se zabránilo potenciálním situacím zablokování, nesmí aplikace přistupovat k databázi peer graphingu z zpětného volání. Pokud aplikace vyžaduje informace z databáze grafů, může aplikace ukládat potřebné informace do mezipaměti a pak odkazovat na mezipaměť v rámci zpětného volání. Ukládání do mezipaměti může také pomoct zkrátit dobu připojení.
Při volání vstupních bodů SSPI vyžaduje infrastruktura peer graphingu specifické hodnoty pro konkrétní parametry pěti (5). Tyto hodnoty parametrů zadané pro ZSP nelze změnit a zprostředkovatel sdílených služeb může buď ignorovat hodnoty pro pět parametrů, nebo je řádně zpracovat. Následující seznam identifikuje tyto konkrétní parametry a požadované hodnoty:
-
Zadejte jednu (1) pro pvGetKeyArgument parametru. Určuje null pro pszPrincipal, pvLogonIDa pGetKeyFn parametry.
-
Zadejte následující příznaky pro parametr fContextReq: ISC_REQ_MUTUAL_AUTH | ISC_REQ_CONFIDENTIALITY | ISC_REQ_INTEGRITY | ISC_REQ_SEQUENCE_DETECT | ISC_REQ_STREAM | ISC_REQ_ALLOCATE_MEMORY.
-
Zadejte následující příznaky pro parametr fContextReq: ASC_REQ_MUTUAL_AUTH | ASC_REQ_CONFIDENTIALITY | ASC_REQ_INTEGRITY | ASC_REQ_SEQUENCE_DETECT | ASC_REQ_STREAM | ASC_REQ_ALLOCATE_MEMORY.
-
Zadejte nulu (0) pro fQOP a MessageSeqNo parametry.
-
Jako parametr MessageSeqNo zadejte nulu (0) a pro parametr pfQOP zadejte hodnotu NULL.
Při volání EncryptMessage, čtyři vyrovnávací paměti jsou předány v SecBufferDesc struktury. Následující tabulka uvádí pořadí předávání vyrovnávacích pamětí.
Struktura specifická pro ZSP | Popis |
---|---|
SECBUFFER_STREAM_HEADER | Obsahuje data hlavičky zabezpečení. Velikost vyrovnávací paměti hlavičky se získá voláním QueryContextAttributes a zadáním atributu SECPKG_ATTR_STREAM_SIZES. |
SECBUFFER_DATA | Obsahuje zprávu ve formátu prostého textu, která se má šifrovat. |
SECBUFFER_STREAM_TRAILER | Obsahuje údaje o bezpečnostních přívěsech. Velikost vyrovnávací paměti hlavičky se získá voláním QueryContextAttributes a zadáním atributu SECPKG_ATTR_STREAM_SIZES. |
SECBUFFER_EMPTY | Inicializováno není. Velikost této vyrovnávací paměti je nula (0). |
Při volání DecryptMessagerozhraní API peer graphingu předává přesně čtyři struktury SecBuffer. První vyrovnávací paměť je SECBUFFER_DATAa obsahuje zašifrovanou zprávu. Zbývající vyrovnávací paměti se používají pro výstup a jsou typu SECBUFFER_EMPTY.
Zprostředkovatel sdílených služeb musí podporovat šifrování a dešifrování vyrovnávacích pamětí uživatelských dat s velikostmi 16 tisíc a vyššími v jednom volání.