Delen via


Beveiligingsserviceproviders

De Security Service Provider Interface (SSPI) biedt een universele, industriestandaard interface voor beveiligde gedistribueerde toepassingen. De Peer Graphing-API biedt een manier voor toepassingen om koppelingen in een grafiek te beveiligen door een SSP (Security Service Provider) op te geven. Dit is een DLL waarmee een SSPI-interface wordt geïmplementeerd. Een toepassing geeft een SSP op wanneer er een grafiek wordt gemaakt met behulp van PeerGraphCreate.

Zie de SSPI-documentatiekoppeling in de lijst met Graphing Reference Linksvoor meer informatie over het maken van uw eigen SSP.

Programmeeroverwegingen voor het implementeren van een SSP

Wees voorzichtig bij het aanroepen van een toepassing vanuit een SSP. De volgende overwegingen zijn van toepassing op SSP-callbacks:

  • Callbacks mogen niet lang duren om terug te keren, omdat ze worden aangeroepen tijdens verbindingsonderhandelingen. Als het te lang duurt voordat een verbinding tot stand is gebracht, kan de verbinding worden verbroken.
  • De Peer Graphing-API past dynamisch time-outwaarden voor verbindingen aan op basis van de werkelijke belasting van een systeem. De laagste time-outwaarde is 20 seconden.
  • Om potentiële impassesituaties te voorkomen, mag een toepassing geen toegang krijgen tot de peer graphing-database vanuit een callback. Als voor een toepassing gegevens van de grafiekdatabase zijn vereist, kan de toepassing de benodigde informatie in de cache opslaan en vervolgens vanuit de callback naar de cache verwijzen. Caching kan ook helpen bij het verminderen van de verbindingstijd.

Bij het aanroepen van de SSPI-toegangspunten vereist de Peer Graphing-infrastructuur specifieke waarden voor specifieke parameters van vijf (5) functies. U kunt deze parameterwaarden die zijn opgegeven in SSP niet wijzigen en de SSP kan de waarden voor de vijf parameters negeren of ze probleemloos verwerken. De volgende lijst identificeert deze specifieke parameters en vereiste waarden:

  • AcquireCredentialsHandle-

    Geef één (1) op voor de parameter pvGetKeyArgument. Hiermee geeft u NULL- voor de pszPrincipal, pvLogonIDen pGetKeyFn parameters.

  • InitializeSecurityContext-

    Geef de volgende vlaggen op voor de parameter fContextReq: ISC_REQ_MUTUAL_AUTH | ISC_REQ_CONFIDENTIALITY | ISC_REQ_INTEGRITY | ISC_REQ_SEQUENCE_DETECT | ISC_REQ_STREAM | ISC_REQ_ALLOCATE_MEMORY.

  • AcceptSecurityContext-

    Geef de volgende vlaggen op voor de parameter fContextReq: ASC_REQ_MUTUAL_AUTH | ASC_REQ_CONFIDENTIALITY | ASC_REQ_INTEGRITY | ASC_REQ_SEQUENCE_DETECT | ASC_REQ_STREAM | ASC_REQ_ALLOCATE_MEMORY.

  • EncryptMessage-

    Geef nul (0) op voor de parameters fQOP- en MessageSeqNo.

  • DecryptMessage-

    Geef nul (0) op voor de parameter MessageSeqNo en NULL- voor de parameter pfQOP-.

Wanneer u EncryptMessage-aanroept, worden vier buffers doorgegeven in de SecBufferDesc structuur. In de volgende tabel wordt de volgorde geïdentificeerd om de buffers door te geven.

SSP-specifieke structuur Beschrijving
SECBUFFER_STREAM_HEADER Bevat de beveiligingsheadergegevens. De grootte van de headerbuffer wordt verkregen door QueryContextAttributes- aan te roepen en het SECPKG_ATTR_STREAM_SIZES kenmerk op te geven.
SECBUFFER_DATA Bevat het bericht zonder opmaak dat moet worden versleuteld.
SECBUFFER_STREAM_TRAILER Bevat de beveiligingstrailergegevens. De grootte van de headerbuffer wordt verkregen door QueryContextAttributes- aan te roepen en het SECPKG_ATTR_STREAM_SIZES kenmerk op te geven.
SECBUFFER_EMPTY Niet geïnitialiseerd. De grootte van deze buffer is nul (0).

 

Bij het aanroepen van DecryptMessage, geeft de Peer Graphing-API precies vier SecBuffer structuren door. De eerste buffer is SECBUFFER_DATAen bevat een versleuteld bericht. De resterende buffers worden gebruikt voor uitvoer en zijn van het type SECBUFFER_EMPTY.

De SSP moet ondersteuning bieden voor het versleutelen en ontsleutelen van buffers voor gebruikersgegevens met een grootte van 16.000 en een grotere aanroep.