Dostawcy usług zabezpieczeń
Interfejs dostawcy usług zabezpieczeń (SSPI) udostępnia uniwersalny, standardowy interfejs branżowy dla bezpiecznych aplikacji rozproszonych. Interfejs API grafowania równorzędnego umożliwia aplikacjom zabezpieczanie linków na grafie przez określenie dostawcy usług zabezpieczeń (SSP), czyli biblioteki DLL implementujące interfejs SSPI. Aplikacja określa dostawcę usług udostępnionych podczas tworzenia grafu przy użyciu PeerGraphUtwórz.
Aby uzyskać więcej informacji na temat tworzenia własnego dostawcy usług udostępnionych, zobacz link do dokumentacji interfejsu SSPI na liście linków referencyjnych Graphing Reference Links.
Zagadnienia dotyczące programowania dotyczące implementowania dostawcy usług udostępnionych
Należy zachować ostrożność podczas wywoływania aplikacji z poziomu dostawcy usług udostępnionych. Następujące zagadnienia dotyczą wywołań zwrotnych dostawcy usług udostępnionych:
- Wywołania zwrotne nie powinny trwać długo, ponieważ są wywoływane podczas negocjacji połączenia. Jeśli nawiązanie połączenia trwa zbyt długo, połączenie może zostać porzucone.
- Interfejs API tworzenia wykresów równorzędnych dynamicznie dostosowuje wartości limitu czasu połączenia na podstawie rzeczywistego obciążenia systemu. Najniższa wartość limitu czasu to 20 sekund.
- Aby uniknąć potencjalnych sytuacji zakleszczenia, aplikacja nie może uzyskać dostępu do równorzędnej bazy danych grafu z wywołania zwrotnego. Jeśli aplikacja wymaga informacji z grafowej bazy danych, aplikacja może buforować niezbędne informacje, a następnie odwoływać się do pamięci podręcznej z poziomu wywołania zwrotnego. Buforowanie może również pomóc skrócić czas połączenia.
Podczas wywoływania punktów wejścia interfejsu SSPI infrastruktura grafowania równorzędnego wymaga określonych wartości dla określonych parametrów pięciu (5) funkcji. Nie można zmienić tych wartości parametrów podanych dla dostawcy usług udostępnionych, a dostawcy usług udostępnionych mogą zignorować wartości pięciu parametrów lub obsłużyć je bezpiecznie. Poniższa lista identyfikuje te określone parametry i wymagane wartości:
-
Określ jeden (1) dla parametru pvGetKeyArgument. Określa null dla parametrów pszPrincipal, pvLogonIDi parametrów pGetKeyFn.
-
Określ następujące flagi dla parametru fContextReq: ISC_REQ_MUTUAL_AUTH | ISC_REQ_CONFIDENTIALITY | ISC_REQ_INTEGRITY | ISC_REQ_SEQUENCE_DETECT | ISC_REQ_STREAM | ISC_REQ_ALLOCATE_MEMORY.
-
Określ następujące flagi parametru fContextReq: ASC_REQ_MUTUAL_AUTH | ASC_REQ_CONFIDENTIALITY | ASC_REQ_INTEGRITY | ASC_REQ_SEQUENCE_DETECT | ASC_REQ_STREAM | ASC_REQ_ALLOCATE_MEMORY.
-
Określ zero (0) dla parametrów fQOP i MessageSeqNo.
-
Określ zero (0) dla parametru MessageSeqNo i null dla parametru pfQOP.
Podczas wywoływania EncryptMessagecztery są przekazywane w strukturze SecBufferDesc. W poniższej tabeli przedstawiono kolejność przekazywania.
Struktura specyficzna dla dostawcy usług udostępnionych | Opis |
---|---|
SECBUFFER_STREAM_HEADER | Zawiera dane nagłówka zabezpieczeń. Rozmiar buforu nagłówka jest uzyskiwany przez wywołanie QueryContextAttributes i określenie atrybutu SECPKG_ATTR_STREAM_SIZES. |
SECBUFFER_DATA | Zawiera wiadomość w postaci zwykłego tekstu, która ma być zaszyfrowana. |
SECBUFFER_STREAM_TRAILER | Zawiera dane przyczepy zabezpieczeń. Rozmiar buforu nagłówka jest uzyskiwany przez wywołanie QueryContextAttributes i określenie atrybutu SECPKG_ATTR_STREAM_SIZES. |
SECBUFFER_EMPTY | Nie zainicjowano. Rozmiar tego buforu wynosi zero (0). |
Podczas wywoływania DecryptMessageinterfejs API tworzenia wykresów równorzędnych przekazuje dokładnie cztery struktury SecBuffer. Pierwszy bufor to SECBUFFER_DATAi zawiera zaszyfrowany komunikat. Pozostałe są używane na potrzeby danych wyjściowych i są typu SECBUFFER_EMPTY.
Dostawcy usług udostępnionych muszą obsługiwać szyfrowanie i odszyfrowywanie danych użytkownika o rozmiarach 16K i większych w jednym wywołaniu.