Teilen über


Sicherheitsdienstanbieter

Die Security Service Provider Interface (SSPI) bietet eine universelle, branchenübde Schnittstelle für sichere verteilte Anwendungen. Die Peer Graphing-API bietet eine Möglichkeit für Anwendungen, Links in einem Diagramm zu sichern, indem sie einen Sicherheitsdienstanbieter (Security Service Provider, SSP) angeben. Dabei handelt es sich um eine DLL, die eine SSPI-Schnittstelle implementiert. Eine Anwendung gibt einen SSP an, wenn ein Diagramm mithilfe von PeerGraphCreateerstellt wird.

Weitere Informationen zum Erstellen Ihres eigenen SSP finden Sie im Link zur SSPI-Dokumentation in der Liste der Graphing Reference Links.

Überlegungen zur Programmierung für die Implementierung eines SSP

Achten Sie beim Aufrufen einer Anwendung innerhalb eines SSP auf Vorsicht. Die folgenden Überlegungen gelten für SSP-Rückrufe:

  • Rückrufe sollten nicht lange dauern, bis sie zurückgegeben werden, da sie während der Verbindungsverhandlung aufgerufen werden. Wenn es zu lange dauert, bis eine Verbindung hergestellt wird, kann die Verbindung gelöscht werden.
  • Die Peer Graphing-API passt Verbindungstimeoutwerte basierend auf der tatsächlichen Auslastung eines Systems dynamisch an. Der niedrigste Timeoutwert beträgt 20 Sekunden.
  • Um potenzielle Deadlock-Situationen zu vermeiden, darf eine Anwendung nicht über einen Rückruf auf die Peerdiagrammdatenbank zugreifen. Wenn eine Anwendung Informationen aus der Graphingdatenbank benötigt, kann die Anwendung die erforderlichen Informationen zwischenspeichern und dann innerhalb des Rückrufs auf den Cache verweisen. Zwischenspeichern kann auch dazu beitragen, die Verbindungszeit zu verringern.

Beim Aufrufen der SSPI-Einstiegspunkte erfordert die Peer Graphing-Infrastruktur bestimmte Werte für bestimmte Parameter von fünf (5) Funktionen. Sie können diese Parameterwerte nicht ändern, die für SSP bereitgestellt werden, und der SSP kann die Werte für die fünf Parameter ignorieren oder sie ordnungsgemäß behandeln. In der folgenden Liste werden diese spezifischen Parameter und die erforderlichen Werte identifiziert:

  • AcquireCredentialsHandle-

    Geben Sie einen (1) für den pvGetKeyArgument Parameter an. Specifies NULL for the pszPrincipal, pvLogonID, and pGetKeyFn parameters.

  • InitializeSecurityContext-

    Geben Sie die folgenden Flags für den fContextReq- Parameter an: ISC_REQ_MUTUAL_AUTH | ISC_REQ_CONFIDENTIALITY | ISC_REQ_INTEGRITY | ISC_REQ_SEQUENCE_DETECT | ISC_REQ_STREAM | ISC_REQ_ALLOCATE_MEMORY.

  • AcceptSecurityContext-

    Geben Sie die folgenden Flags für den fContextReq--Parameter an: ASC_REQ_MUTUAL_AUTH | ASC_REQ_CONFIDENTIALITY | ASC_REQ_INTEGRITY | ASC_REQ_SEQUENCE_DETECT | ASC_REQ_STREAM | ASC_REQ_ALLOCATE_MEMORY.

  • EncryptMessage-

    Geben Sie null (0) für die fQOP- und MessageSeqNo Parameter an.

  • DecryptMessage-

    Geben Sie null (0) für den parameter MessageSeqNo an, und NULL- für den parameter pfQOP.

Beim Aufrufen EncryptMessage-werden vier Puffer in der SecBufferDesc--Struktur übergeben. In der folgenden Tabelle wird die Reihenfolge identifiziert, in der die Puffer übergeben werden sollen.

SSP-spezifische Struktur Beschreibung
SECBUFFER_STREAM_HEADER Enthält die Sicherheitsheaderdaten. Die Größe des Headerpuffers wird abgerufen, indem QueryContextAttributes aufgerufen und das attribut SECPKG_ATTR_STREAM_SIZES angegeben wird.
SECBUFFER_DATA Enthält die zu verschlüsselnde Nur-Text-Nachricht.
SECBUFFER_STREAM_TRAILER Enthält die Sicherheitsanhängerdaten. Die Größe des Headerpuffers wird abgerufen, indem QueryContextAttributes aufgerufen und das attribut SECPKG_ATTR_STREAM_SIZES angegeben wird.
SECBUFFER_EMPTY Nicht initialisiert. Die Größe dieses Puffers ist Null (0).

 

Beim Aufrufen DecryptMessageübergibt die Peer Graphing-API genau vier SecBuffer- Strukturen. Der erste Puffer ist SECBUFFER_DATAund enthält eine verschlüsselte Nachricht. Die verbleibenden Puffer werden für die Ausgabe verwendet und sind vom Typ SECBUFFER_EMPTY.

Der SSP muss das Verschlüsseln und Entschlüsseln von Benutzerdatenpuffern mit einer Größe von 16 KB und mehr in einem Aufruf unterstützen.